커링이란?
: 여러 인자를 입력받는 함수를 인자 하나만 입력받는 함수들의 시퀀스로 변환하는 것
func add2(_ x: Int, _ y: Int) -> Int {
return x + y
}
add2(1, 2) // 결과: 3
Swift
복사
위 함수를 커링하면 다음과 같이 변환할 수 있습니다.
func add2Currying(_ x: Int) -> ((Int) -> Int) {
return { y in
return x + y
}
}
add2Currying(1)(2) // 결과: 3
Swift
복사
커링을 하는 이유
함수의 합성을 원활하게 하기 위해서 커링을 사용합니다.
함수의 Output이 다른 함수의 Input으로 연결되면서 합성될 때, 함수들이 서로 chain을 이루면서 연속적으로 연결이 되려면, Output과 Input의 타입과 갯수가 같아야 합니다. 커링을 사용하면 함수의 Output은 하나밖에 없으니 Input 또한 모두 하나 씩만 갖도록 한다면 합성하기가 쉬워질 것입니다!