Potato
์•ˆ๋…•ํ•˜์„ธ์š”, ๊ฐ์žก๋‹ˆ๋‹ค?๐Ÿฅ” ^___^ ๐Ÿ˜บ github ๋ฐ”๋กœ๊ฐ€๊ธฐ ๐Ÿ‘‰๐Ÿป

Swift/Swift BASIC

[Swift] ๊ธฐ์ดˆ ๋ฌธ๋ฒ• - ํ•จ์ˆ˜ ์ •์˜

๊ฐ์ž ๐Ÿฅ” 2022. 1. 12. 02:13
๋ฐ˜์‘ํ˜•

 

ํ•จ์ˆ˜

์ž‘์—…์˜ ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„์ด์ž ์ฝ”๋“œ์˜ ์ง‘ํ•ฉ์ด๋‹ค. ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋ฐ˜๋ณต์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ”ผํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•œ๋‹ค. ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด ๋‘๊ณ , ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋„์ค‘ ๋ฐ˜๋ณตํ•ด์„œ ์ˆ˜ํ–‰ํ•ด์•ผํ•  ์ž‘์—…์ด ์žˆ์œผ๋ฉด ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด์„œ ๋ฐ˜๋ณต์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๋ฒ—์–ด๋‚  ์ˆ˜ ์žˆ๋‹ค. 

ํ•จ์ˆ˜์˜ ํฌ๊ธฐ๋Š” ์ •ํ•ด์ง„ ๊ฒƒ์€ ์—†์ง€๋งŒ, ๋Œ€๋ถ€๋ถ„ ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ์„ ์œ„ํ•œ ํ•จ์ˆ˜ ํ•œ๊ฐœ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

Swift์˜ ํ•จ์ˆ˜ ์ •์˜

func ํ•จ์ˆ˜๋ช…(ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„: ๋ฐ์ดํ„ฐ ํƒ€์ž…) -> ๋ฐ˜ํ™˜ ํƒ€์ž… {
      return ๋ฐ˜ํ™˜ ๊ฐ’
}

ex) ๋‘ ๊ฐœ์˜ ๊ฐ’์„ ๋”ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•ด๋ณด์ž.

func sum(a: Int, b: Int) -> Int {
	return a+b
}

// ํ•จ์ˆ˜ ์ ์šฉ
sum(a: 5, b: 3)
// prints 8

 

ex) ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š” hello ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•ด๋ณด์ž.

func hello () -> String {
	return "hello"
}

 

ex) ๋ฐ˜ํ™˜๊ฐ’์ด ์—†๋Š” ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•ด๋ณด์ž. ๋‘ ๊ฐ€์ง€์˜ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

// 1. ๋ฐ˜ํ™˜๊ฐ’์— Void ๋„ฃ์Œ
func printName() -> Void {
	return "hello"
}

// 2. ๋ฐ˜ํ™˜๊ฐ’์„ ์•ˆ์ ์–ด๋„ ๋จ.
func printName() -> {
	return "asdf"
}

 

ex) ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๊ธฐ๋ณธ๊ฐ’์„ ๋„ฃ์–ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์ด ๊ธฐ๋ณธ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋ฉด ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ๊ฐ’์„ ๋„˜๊ฒจ์ฃผ์ง€ ์•Š์•„๋„ ๊ธฐ๋ณธ๊ฐ’์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. me๋Š” ๊ธฐ๋ณธ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์•ˆ์จ์ฃผ์–ด๋„ ๋œ๋‹ค.

func greeting(friend: String, me: String = 'didu') {
	print("Hello, \(friend)! I'm \(me).")
}
greeting(friend: "Andy")
// prints "Hello, Andy! I'm didu."

 

ex) ์ „๋‹ฌ์ธ์ž ๋ ˆ์ด๋ธ”์„ ์‚ฌ์šฉํ•ด์„œ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๊ธฐ.

๊ธฐ๋ณธ ํ˜•ํƒœ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ์ „๋‹ฌ์ธ์ž ๋ ˆ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์—ญํ• ์„ ์ข€ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์ด ๋†’์•„์ง„๋‹ค. 

func ํ•จ์ˆ˜์ด๋ฆ„(์ „๋‹ฌ์ธ์ž ๋ ˆ์ด๋ธ” ๋งค๊ฐœ๋ณ€์ˆ˜ ์ด๋ฆ„: ๋งค๊ฐœ๋ณ€์ˆ˜ ํƒ€์ž…, ์ „๋‹ฌ์ธ์ž ๋ ˆ์ด๋ธ” ๋งค๊ฐœ๋ณ€์ˆ˜ ์ด๋ฆ„: ๋งค๊ฐœ๋ณ€์ˆ˜ ํƒ€์ž…... ) -> ๋ฐ˜ํ™˜ ํƒ€์ž… {
	return ๋ฐ˜ํ™˜ ๊ฐ’
}

โ–ถ ์นœ๊ตฌ์—๊ฒŒ ์ธ์‚ฌ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž.

func sendMessage(from myName: String, to name: String) -> String {
	return "Hello \(name)!, I'm \(myName)."
}

sendMessage(from: "didu", to: "Minsoo")
//prints "Hello Minsoo, I'm didu."

์—ฌ๊ธฐ์„œ ์ „๋‹ฌ์ธ์ž ๋ ˆ์ด๋ธ”์€ "From"๊ณผ "To" ์ด๋‹ค. ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ from ~~, to ~~ ํ•ด์ฃผ๋ฉด, from์œผ๋กœ ๋“ค์–ด์˜ค๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ myName์œผ๋กœ ์ •์˜๋˜๊ณ , to๋กœ ๋“ค์–ด์˜ค๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ name์œผ๋กœ ์ •์˜๋  ๊ฒƒ์ด๋‹ค.

 

ex) ๊ธฐ์กด์–ธ์–ด์ฒ˜๋Ÿผ ์ „๋‹ฌ์ธ์ž๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด, ์™€์ผ๋“œ ์นด๋“œ ์‹๋ณ„์ž๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ (์–ธ๋”๋ฐ” _)

๋งค๊ฐœ๋ณ€์ˆ˜ ์•ž์— ์–ธ๋”๋ฐ”(_)๋ฅผ ์ ์–ด์ฃผ๋ฉด ์ „๋‹ฌ์ธ์ž ๋ ˆ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฒƒ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ์„ ์–ธํ•œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ๋”ฐ๋กœ๋”ฐ๋กœ ์•ˆ์ ์–ด์ฃผ๊ณ  ๊ฐ’๋งŒ ์ ์–ด์„œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ ํ•  ์ˆ˜ ์žˆ๋‹ค.

func sendMessage(_ name: String) -> String {
	return "Hello \(name)."
}

// ํ•จ์ˆ˜ ํ˜ธ์ถœ
// ํ˜ธ์ถœ ํ•  ๋•Œ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ๊ฐ’์œผ๋กœ ๋ฐ”๋กœ ํ˜ธ์ถœ ๊ฐ€๋Šฅ
sendMessage("didu")
// prints "Hello didu."

 

ex) ๊ฐ€๋ณ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ™œ์šฉํ•œ ํ•จ์ˆ˜

swift๋Š” ํ•จ์ˆ˜์— ๋ช‡ ๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋“ค์–ด์˜ฌ์ง€ ๋ชจ๋ฅผ ๋•Œ, ๊ฐ€๋ณ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ€๋ณ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” 0๊ฐœ ์ด์ƒ์˜ ๊ฐ’์„ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๊ณ , ๊ฐ€๋ณ€๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋“ค์–ด์˜จ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋ฐฐ์—ด์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•จ์ˆ˜๋งˆ๋‹ค ํ•œ ๊ฐœ์˜ ๊ฐ€๋ณ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

func sendMessage(me: String, friends: String...) -> String {
	return "Hello \(friends)! I'm \(name)"
}

// ํ•จ์ˆ˜ ํ˜ธ์ถœ
sendMessage(me: "didu", friends: "minsoo", "suzi", "ann", "andy")
// prints : Hello ["minsoo", "suzi", "ann", "andy"]! I'm didu."
// ๋ฐฐ์—ด๋กœ ๋„˜๊ฒจ๋ฐ›์Œ!!!

 

๋ฐ˜์‘ํ˜•