Swift에서는 함수를 variable로 선언할 수 있고 이를 다른 함수의 parameter로 넘겨줄 수 있음 -> closures
closure는 parameter를 brace안에 넣음.
선언할 때 변수명 뒤에 ()안써야함.
let driving = {
print("drive")
}
driving()
closure를 생성할 때 parameter는 {}괄호 안에 쓰면 됨.
parameter선언 한 뒤 in
closure를 실행시킬 때 변수 라벨을 써주지 않아도 됨.
let driving = {(place: String) in
print(“I’m going to \(place) in my car”)
}
driving(“London”)
closure를 통해 value를 return하고 싶을 경우엔 in 앞에 써주면됨
let driving = { (place: String) -> String in
return “I’m going to \(place) in my car”
}
closure는 parameter로 사용가능.
() -> Void 로 사용
let driving {
print(“I’m driving in my car”)
}
func travel(action: () -> Void) {print(“I’m getting ready to go.”)
action()
print(“i arrived”)
}
travel(action: driving)
parameter로 closure를 받을 때 trailing closure syntax를 사용하여 위 코드를 아래처럼 표현할 수 있음
func travel(action: () -> Void) { print(“I’m getting ready to go.”)
action()
print(“i arrived”)
}
travel {
print(“I’m driving in my car”)
}