2022.10.02.
TIL / Swift
var savedFunc = { print("1") }
// 파라미터로 받은 클로저를 외부로 할당할때 escaping(탈출)시킨다.
func escapingFunc1(closure: @escaping () -> ()) {
savedFunc = closure
}
escapingFunc1 { print("2") }
savedFunc() // "2"
func escapingFunc2(closure: @escaping (String) -> ()) {
let name = "Any"
// 1초 뒤에 실행
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
closure(name)
}
}
escapingFunc2(closure: { name in
print("name: \(name)")
})
@autoclosure
키워드 사용시 자동으로 클로저를 만들어준다.
파라미터가 없는 경우에만 사용 가능하다.
func printBoolToString(closure: @autoclosure () -> Bool) {
if closure() {
print("Y")
} else {
print("N")
}
}
let num = 1
printBoolToString(closure: num == 1)