iOS/Swift

[Swift] 클로저(closure) 축약 정리

유훈 | Yuhun 2022. 5. 29. 05:26
반응형

PS를 하면서 고차함수를 사용하는데 클로저를 다시 한 번 정리할 필요가 있다고 생각이 들었습니다.

원리는 모두 같음으로 reduce를 가지고 정리해 보겠습니다.

 

축약의 원리는 추론입니다. 클로저가 들어가는 함수에서 타입이 정의되어 있음으로 return과 parameter의 타입의 생략이 가능하고 클로저 in 뒤에는 return이 수반됨으로 생략이 가능합니다. 또한 클로저가 마지막에 오면 후행 클로저로 뒤로 빼서 연산이 가능합니다.

파라미터는 순서대로 $0, $1, $2 등 달러사인을 붙여 사용이 가능합니다.

문법을 공부하며 짧은게 좋다고 막 사용할게 아니라 이해하고 사용하도록 해야겠습니다.

let a: [Int] = [1,2,3]

// 아래 값은 모두 6
a.reduce(0, {(v1:Int,v2:Int)->Int in return v1 + v2}) // 기본
a.reduce(0, {(v1:Int,v2:Int)->Int in v1 + v2}) // return 생략
a.reduce(0, {(v1:Int,v2:Int) in v1 + v2}) // return 타입 생략
a.reduce(0, {(v1, v2) in v1 + v2}) // parameter 타입 생략
a.reduce(0, { $0 + $1 }) // parameter 생략
a.reduce(0){$0 + $1} // 후행 클로저
a.reduce(0, +) // 원래 파라미터가 두개로 연산자 양쪽에 옴으로 생략 가능
반응형