๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

IOS/Swift

[Swift ๊ธฐ์ดˆ ๋ฌธ๋ฒ•] ํ•จ์ˆ˜ ๊ธฐ๋ณธ, ๊ณ ๊ธ‰

๐ŸŽ ํ•จ์ˆ˜ ๊ธฐ๋ณธ

 

// Swift์—์„œ๋Š” ํ•จ์ˆ˜๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์ด ์„ ์–ธ!

func ํ•จ์ˆ˜์ด๋ฆ„(๋งค๊ฐœ๋ณ€์ˆ˜1์ด๋ฆ„: ๋งค๊ฐœ๋ณ€์ˆ˜1ํƒ€์ž…, ๋งค๊ฐœ๋ณ€์ˆ˜2์ด๋ฆ„: ๋งค๊ฐœ๋ณ€์ˆ˜2ํƒ€์ž…...) -> ๋ฐ˜ํ™˜ํƒ€์ž… {
	/* ํ•จ์ˆ˜ ๊ตฌํ˜„๋ถ€ */
    return ๋ฐ˜ํ™˜๊ฐ’
}

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

-> ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜ ๊ฐ’์ด ์—†๋‹ค๋ฉด Void ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜ํ•˜๊ฑฐ๋‚˜ ์ƒ๋žต ๊ฐ€๋Šฅ!

 

  • Swift์—์„œ๋Š” ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ธฐ๋ณธ๊ฐ’์„ ๋ฏธ๋ฆฌ ์„ค์ •ํ•ด๋‘˜ ์ˆ˜ ์žˆ๋‹ค.
// ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๊ธฐ๋ณธ๊ฐ’ ์„ค์ •
func greeting(friend: String, me: String = "pig") {
	print("Hello \(friend)! I'm \(me)")
}

 

  • ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ ๋” ์•Œ์•„๋ณด๊ธฐ ์‰ฝ๋„๋ก "์ „๋‹ฌ์ธ์ž ๋ ˆ์ด๋ธ”" ๊ธฐ๋Šฅ์„ ์ œ๊ณต
// ํ•จ์ˆ˜ ์ „๋‹ฌ์ธ์ž ๋ ˆ์ด๋ธ”
func greeting(to friend: String, from me: String) {
	print("Hello \(friend)! I'm \(me)")
}

// ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ์—๋Š” ์ „๋‹ฌ์ธ์ž ์—๋ฆฌ๋ธ”์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
greeting(to: "hana", from: "pig")

 

  • ์ „๋‹ฌ ๋ฐ›์„ ๊ฐ’์˜ ๊ฐœ์ˆ˜๋ฅผ ์•Œ๊ธฐ ์–ด๋ ค์šด ์ƒํ™ฉ์—์„œ๋Š” "๊ฐ€๋ณ€ ๋งค๊ฐœ๋ณ€์ˆ˜" ๊ธฐ๋Šฅ์„ ์ œ๊ณต
    ์ด๋•Œ, ๊ฐ€๋ณ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ํ•จ์ˆ˜์—์„œ 1๊ฐœ๋งŒ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.
// ๊ฐ€๋ณ€ ๋งค๊ฐœ๋ณ€์ˆ˜
func sayHelloToFriends(me: String, friends: String...) -> String {
	return "Hello \(friends)! I'm \(me)!"
}

print(sayHelloToFriends(me: "apple", friends: "hana", "eric", "wing"))
// Hello ["hana", "eric", "wing"]! I'm apple!

 

๐ŸŽ ์ผ๊ธ‰ ๊ฐ์ฒด(first-class object)
ํ•จ์ˆ˜๋Š” ์ผ๊ธ‰ ๊ฐ์ฒด์ด๋ฏ€๋กœ ๋ณ€์ˆ˜, ์ƒ์ˆ˜, ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.