Function Types
작성일
Function Types
- 변수나 상수에 저장할 수 있다.
- 파라미터로 전달할 수 있다.
- 함수에 저장할 수 있다.
형식추론
func sayHello() {
print("Hello, Swift")
}
let f1 = sayHello //sayHello()라고하면 에러가 된다 함수가 호출되기 때문이다.
f1() // ()->() Hello,Swift
직접 자료형 선언
func printHello(with name: String) {
print("hello, \(name)")
}
let f2: (String) -> () = printHello(with:) // (String) -> ()
let f3 = printHello(with:) // (String) -> ()
f3("World") // hello, World
func add(a: Int, b: Int) -> Int {
return a + b
}
var f4: (Int, Int) -> Int = add(a:b:)
f4(1, 2) // 3
func add(_ a: Int, with b: Int) -> Int {
return a + b
}
f4 = add(_:with:)
func swapNumbers(_ a: inout Int, _ b: inout Int) {
}
let f5 = swapNumbers(_:_:)
f5 // (inout Int, inout Int) -> ()
func sum(of numbers: Int...) {
}
let f6 = sum(of:)
f6 // (Int...) -> ()
사칙연산 코드
func add(_ a: Int, _ b: Int) -> Int {
return a + b
}
func subtract(_ a: Int, _ b: Int) -> Int {
return a - b
}
func multiply(_ a: Int, _ b: Int) -> Int {
return a * b
}
func divide(_ a: Int, _ b: Int) -> Int {
return a / b
}
typealias ArithmeticFunction = (Int, Int) -> Int
func selectFunction(from op: String) -> ArithmeticFunction? {
switch op {
case "+":
return add(_:_:)
case "*":
return multiply(_:_:)
case "-":
return subtract(_:_:)
case "/":
return divide(_:_:)
default:
return nil
}
}
let af = selectFunction(form: "+") //(Int, Int) -> Int
af?(1, 2) //출력 3
selectFuncton(form: "*")?(12, 34) // 408