swift & iOS/swift

[swift] 함수에 함수를 전달하거나 함수를 리턴하거나

whale3 2022. 1. 16. 17:16

swift에서 함수는 1급 객체(first class object)이기 때문에 함수를 변수에 담거나, 다른 함수에 argument로 전달하거나 리턴값으로 사용할 수 있다. (자바스크립트도 마찬가지...)

 

그래서 아래 같은 것도 할 수 있다..

func x(n: Float) {
    print("x: \(n)")
}

func add(num: Int, printFloat: (Float) -> Void) {
    let n = Float(num)
    printFloat(n)
    return 
}

add(num: 7, printFloat: x)

 

또는 함수를 리턴할 때에는...

func test() -> (String) -> String { // String을 받고 String을 리턴하는 함수를 리턴
	// ...
}

 

화살표가 여러 개 붙어서 조금 헷갈리긴 하지만 함수를 argument로 전달하거나 리턴하는 식의 코드는 어떤 유틸리티를 작성할 때 사용하게 되는 것 같다. 

반응형