반응형
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, +) // 원래 파라미터가 두개로 연산자 양쪽에 옴으로 생략 가능
반응형
'iOS > Swift' 카테고리의 다른 글
[Swift] protocol에 대하여(개념 정리) (0) | 2022.06.30 |
---|---|
[Swift] PS에 유용하게 사용할 것들 정리 (0) | 2022.06.23 |
[Swift] 구문 레이블 (for문 중첩 제어) (0) | 2022.04.02 |
[iOS] API 사용시 url에 한글을 사용할 수 없는 문제 (0) | 2022.03.25 |
[Swift] 10진수를 2진수로 변환하는 방법 (0) | 2022.03.15 |