아미(아름다운미소)

SWIFT 클로저 본문

랭귀지/SWIFT

SWIFT 클로저

유키공 2018. 1. 8. 10:20

클로저 란?

func hello(message: String) -> (String, String) -> String {
    return { (firstName: String, lastName: String) -> String in
        return lastName + firstName + message
    }
}

함수는 이름이 있는 클로저 입니다.Swift 컴파일러의 타입 추론 덕분에, hello() 함수에서 반환하는 타입을 가지고 클로저에서 어떤 파라미터를 받고 어떤 타입을 반환하는지를 알 수 있습니다.
func hello(message: String) -> (String, String) -> String {
    return { firstName, lastName in
        return lastName + firstName + message
    }
}

첫 번째 파라미터는 $0, 두 번째 파라미터는 $1로 바꿔서 쓸 수 있습니다.
func hello(message: String) -> (String, String) -> String {
    return {
        return $1 + $0 + message
    }
}

클로저 내부의 코드가 한 줄이라면, return까지도 생략해버릴 수 있습니다.
func hello(message: String) -> (String, String) -> String {
    return { $1 + $0 + message }
}

클로저는 변수처럼 정의할 수 있습니다.
let hello: (String, String) -> String = { $1 + $0 + "님 안녕하세요!" }
hello("a", "b")

옵셔널으로도 정의할 수 있습니다.
let hello: ((String, String) -> String)?
hello?("a", "b")


Comments