[Swift] 트레일링 클로저 / Trailing Closure
2022. 8. 26. 23:53ㆍ🍏/Swift
- 트레일링 클로저(Trailing Closure)
후행 클로저라고도 불림.
// 원본 함수
value.sort(by: { (s1, s2) in
return s1 > s2
})
==
value.sort() { (s1, s2) in
return s1 > s2
}
==
value.sort { (s1, s2) in
return s1 > s2
}
// 인자값이 한개라면 인자값을 넣어주기 위한 괄호 부분도 생략이 가능.
// 인자값이 여러개라면, 무작정 괄호를 생략해서는 안됨.
==
func divide(base: Int, success s: () -> Void) -> Int {
defer {
s()
}
return 100 / base
}
print(divide(base: 10)){print("연산 성공")}
// 마지막 인자값이 트레일링 클로저에 부합한다면 생략가능.
==
func divide(base: Int, success s: () -> Void, fail f: () -> Void) -> Int {
guard base != 0 else {
f()
return 0
}
defer {
s()
}
return 100 / base
}
divide(base: 0, success: {print("success")}){print("fail")} // 가능
divide(base: 0){print("success")}{print("fail")} // 불가능
// 마지막 인자값들이 모두 클로저여도 연이어 클로저를 사용할 순 없음.
'🍏 > Swift' 카테고리의 다른 글
[Swift] @autoclosure / 지연된 실행 (0) | 2022.08.31 |
---|---|
[Swift] @escaping Closure / escape 클로저 (1) | 2022.08.31 |
[Swift] 자동 참조 카운트 / ARC / Auto Referencing Counter (0) | 2022.08.26 |
[Swift] Swift / 언어 (0) | 2022.08.16 |
[Swift] Ascii to String / String to Ascii / 아스키코드 변환 / 아스키 값 변환 / 아스키 / ASCII (0) | 2022.07.12 |