(label name: Type)
func sayHello(name: String) {} //name 은 파라미터이자 레이블. 호출식에는 argument label, 함수선언에서는 parameter name
sayHello(name: "Swift")
func sayHello(to name: String){} // function name = sayHelloto
sayHello(to: "Swift")
func sayHello(_ name: String) {}
sayHello("Swift")
/*반환값이 있는 함수*/
func addNum(a: Int, b: Int) -> Int {
return a + b
}
(name: Type...)
func sayHello(_ name: String...) {
}
print("Hello")
print("Hello", "Swfit") // param 2개같지만 실제로는 하나임 -> 가변 파라미터(하나 이상의 argument 전달 가능)
(name: inout Type)
funcName(argLabel: &expr)
var num1, num2
func swapNumber(_a: inout Int, with b: inout Int) {
let tmp = a
a = b
b = tmp
}
swapNumber(&num1, with: &num2) //변수를 함수 바디 내부로 복사(copy in), 함수종료되면 함수에서 변경된 값이 전달한 변수(외부)에 복사(copy out)
fuctionName(label:)
functionName(label:label:)
functionName
Swift의 함수 : First-class Citizen
First-class Citizen
1. 변수나 상수에 저장할 수 있다. → 자료형 필요
2. 파라미터로 전달할 수 있다. → 자료형 필요
3. 함수에서 리턴할 수 있다. → 자료형 필요
4. 함수가 함수를 반환할 수 있ㄷ.
func sayHello() {}
let f1 = sayHello // let f1: () -> () 로 타입표시해주기도 가능
f1() // 호출할 때 argument label 은 사용하지 않음!