func foo(base: Int) -> String {
print("함수 foo가 실행됩니다.")
return "결과 값은 \\(base + 1) 입니다."
}
let fn2: (Int) -> String = foo
fn2(5) // 결과 값은 6 입니다.
출력 결과
함수 foo가 실행됩니다.
func plus(a: Int, b: Int) -> Int {
return a + b
}
func calc(_ operand: String) -> (Int, Int) -> Int {
switch operand {
case "+":
return plus
default:
return plus
}
}
let operand: (Int, Int) -> Int = calc("+")
operand(3, 4) // 7
func increment(param: Int) -> Int {
return param + 1
}
func broker(base: Int, function fn: (Int) -> Int) -> Int {
return fn(base)
}
let x = broker(base: 4, function: increment)
print(x) // 5
func outer(base: Int) -> String {
func inner(inc: Int) -> String {
return "\\(inc)를 반환"
}
return inner(inc: base + 1)
}
let y = outer(base: 4)
print(y) // 5를 반환
내부함수는 외부함수의 실행과 종료에 생성되었다 사라집니다.
일급 함수의 특성