\. closure(인줄 알았던..)
Posted on 2022-03-21 by GKSRUDTN99
Swift&Xcode
Swift
예제 먼저 확인해보겠습니다.
struct TestStruct {
let haha = "haha"
let hoho = "hoho"
}
func testClosure(_ closure: (TestStruct) -> String) {
print(clousre(TestStruct()))
}
testClosure(\.haha) // "haha"
testClosure(\.hoho) // "hoho"
closure가 1개의 인자를 받아 특정 연산을 거치지 않고 .(dot) chain만으로 리턴할 때, 예제와 같이 줄여서 쓸 수 있습니다.
closure 축약의 한 형태라고 생각할 수 있습니다.
Swift의 closure 축약에 대해서 대강 알아보자면,
testClosure { testStruct -> String in
return .haha
}
위에서, 매개변수를 쓰는 대신 1 등의 기호를 이용해 아래와 같이 축약할 수 있습니다.
testClosure { $0.haha }
마지막으로, 매개변수가 1개인 경우 $0도 줄여서 \.
으로 사용합니다.
testClosure(\.haha)
8.17 추가
이번에 KVO(Key-Value Observing)과 KVC(Key-Value Coding)을 공부하면서,
\.
으로 표시한 Closure는 단순히 $0.haha
를 줄인 것이 아니라,
KeyPath를 Closure로 넘겨주는 방식이라는 것을 알게 되었습니다.
KVO와 KVC에 관한 포스팅은 조만간 진행하도록 하겠습니다. 감사합니다.
이짐구 May 18, 2022, 4:29 p.m.
댓글 남기고갑니다 ㅎㅎ
Updated: May 18, 2022, 4:29 p.m.
Anonymous Oct. 7, 2022, 4:06 p.m.
제목이 웃기네요ㅋㅋㅋㅋㅋ
잘 읽었습니다.