- ๋ฐ๋ณต๋๋ ๋์์ ๋จ์ํํด์ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค
- ์ฝ๋๋ฅผ ๋ ผ๋ฆฌ์ ๋จ์๋ก ๊ตฌ๋ถ์ด ๊ฐ๋ฅํ๋ค
- ์ฝ๋ ๊ธธ์ด๊ฐ ๊ธด ๊ฒ์ ๋จ์ํํด์ ์ฌ์ฉ๊ฐ๋ฅํ๋ค
- ๋ฏธ๋ฆฌ ํจ์๋ฅผ ์ ๋ง๋ค์ด ๋์ผ๋ฉด, ๊ฐ๋ฐ์๋ ์ฌ์ฉ๋ง ํ๋ฉด๋๋ค
// name: ํ๋ผ๋ฏธํฐ
func saySomething(name: String) {
print("hello \(name)")
}
saySomething(name: "์ ์น์ฌ")
// ์์ ํ์ด ์๋ ๊ฒฝ์ฐ~
func sayHello(name: "์ ์น์ฌ") -> String {
return "hello \(name)"
}- Argument Label
func printName1(firstName name: String) {
print("๋์ ์ด๋ฆ์ \(name)์
๋๋ค.")
}
printName1(first: "๋ดํด")๋ ์ด๋ธ์ ์ฌ์ฉํ๋ฉด ํจ์๋ฅผ ์ฌ์ฉํ ๋ ๋ ๋ช ํํ๊ฒ ๋ฌด์์ ์๊ตฌํ๋์ง ์๋ ค์ค ์ ์๋ค.
- ์์ผ๋ ์นด๋ ํจํด
func addPrintFunction(_ firstNum: Int, _ secondNum: Int) {
print(firstNum + secondNum)
}
addPrintFunction(1, 2)ํจ์์์์ ์์ผ๋ ์นด๋ ํจํด์ ํจ์๋ช ๋ง๋ณด๊ณ ๋ ๋ช ํํ๊ฒ ๋ญ๋ฃ์ด์ผ ํ ์ง ์๋ ์ฐ๋ฉด ์ ์ฉํ๋ค.
- ๊ฐ๋ณ ํ๋ผ๋ฏธํฐ
func arithmeticAverage(_ numbers: Double...) -> Double {
var total = 0.0
for number in numbers {
total += number
}
return total / Double(numbers.count)
}๊ฐ๋ณ ํ๋ผ๋ฏธํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋์ ํ๋ผ๋ฏธํฐ๋ก 2๊ฐ ์ด์์ argument๋ฅผ ์ ๋ฌํ ์ ์๋ค.
๋ฐฐ์ด ํํ๋ก ์ ๋ฌ๋๋ฉฐ ๊ธฐ๋ณธ๊ฐ์ ๊ฐ์ง ์ ์๋ค.
- ์ค์ฒฉ ํจ์ ์ฌ์ฉํ๊ธฐ
func chooseStepFunction(backward: Bool, value: Int) -> Int {
func stepForward(input: Int) -> Int {
return input + 1
}
func stepBackward(input: Int) -> Int {
return input - 1
}
if backward {
return stepBackward(input: value)
} else {
return stepForward(input: value)
}
}์ค์ฒฉ ํจ์๋ ํจ์๋ฅผ ์ ํ์ ์ผ๋ก ์ฌ์ฉํ๊ฒ ํ๊ณ ์ถ์๋ ์ด๋ค
- ํจ์ ๊ฐ๋ฆฌํค๊ธฐ
func doSomething() {
print("hello world!")
}
var some = doSomething
some() // hello world!
// ํ๋ผ๋ฏธํฐ๊ฐ ์์ ๊ฒฝ์ฐ ์ฝค๋ง์์ด ์ฌ์ฉํ๊ธฐ!
func printName1(firstName name: String) {
print("๋์ ์ด๋ฆ์ \(name)์
๋๋ค.")
}
var some1: (String) -> () = printName1(first:)- ํจ์์ ์ค๋ฒ๋ก๋(overload): ์์ด๋ก ๊ณผ์ ํ๋ค๋ผ๋ ๋ป
func doSomething(value: Int){
print(value)
}
func doSomething(value: Double){
print(value)
}
func doSomething(value: String){
print(value)
}ํจ์์ ์ค๋ฒ๋ก๋ฉ์ ์ฌ์ฉํ๋ ์ด์ ๋ ๊ฐ์ ์ฑ๊ฒฉ์ ํจ์๋ฅผ ๋ค๋ฃจ๊ธฐ๊ฐ ์ฝ๊ฒ ๋ง๋ค์ด์ฃผ๊ธฐ ๋๋ฌธ์ด๋ค.
inoutํค์๋: ํจ์์ ์ฐธ์กฐ๋ฅผ ์ ๋ฌํ๋ค๋ ๊ฐ๋
๐ก ํจ์๋ฅผ ํตํด, ๋ณ์๋ฅผ ์ง์ ์์ ํ๊ณ ์ถ์ ๊ฒฝ์ฐ๋ ์ด๋ป๊ฒ ํด์ผํ ๊น?
var num1 = 123 // ์ ์ญ๋ณ์
var num2 = 456 // ์ ์ญ๋ณ์
// a์ b๋ฅผ ๋ฐ๊ฟ๋ณด๋ ค๊ณ ํ๋ ํจ์
func swap(a: Int, b: Int) {
a = b // a, b๋ ์์์ด๊ธฐ ๋๋ฌธ์ ํ ๋น๋ถ๊ฐ!
b = c
}
swap(a: num1, b: num2)
// inoutํค์๋๋ฅผ ํตํด a์ b๋ฅผ ๋ฐ๊พธ๋ ํจ์
func swapNumbers(a: inout Int, b: inout Int) {
var temp = a
a = b
b = temp
}
swapNumbers(a: &num1, b: &num2)ํจ์๋ด์ ํ๋ผ๋ฏธํฐ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐํ์
์ด๊ณ ์์์์์ด๊ธฐ๋๋ฌธ์ ๋ณ๊ฒฝ ๋ถ๊ฐ ์์น์ ๊ฐ์ง๊ณ ์๋ค.
inout ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ฐธ์กฐ(์๋ณธ์ ์ฃผ์)๋ฅผ ์ง์ ํจ์์ ์ ๋ฌํ๋ฉด ์ ์ํฉ์ ํด๊ฒฐํ ์ ์์
(์ฃผ์ ํ ์ ! ํจ์๋ฅผ ์ฌ์ฉ์ ๋ณ์๋ฅผ ์ ๋ฌํ ๋ ๋ฐ๋์ ์ ํผ์ผํธ & ๋ถ์ฌ์ผ ํ๋ค)
@attributeํค์๋: ์ ์ธ์ด๋ ํ์ ์ ์ถ๊ฐ์ ๋ณด ์ ๊ณต
@discardableResult
func sayHelloString() -> String {
print("ํ์ด")
return "์๋
ํ์ธ์"
}
_ = sayHelloString() // @discardableResult ์ฌ์ฉํ์ง ์์ผ๋ ค๋ฉด
sayHelloString()@discardableResult ๋ ์ด ํจ์์ ๋ฆฌํด๊ฐ์ ์ฌ์ฉ์ํ ์๋ ์์ด~ ๋ผ๋ ๋ป์