더북(TheBook)

3.3.1 인자가 여럿 있는 함수 처리하기

3.1.5절에서 인자가 여럿 있는 함수란 존재하지 않는다고 말했다. 단지 원소가 여러 개 들어 있는 튜플을 유일한 인자로 받는 함수만 존재한다고 말했다. 여러분이 원하는 개수만큼 튜플에 원소를 넣을 수 있다. 그리고 원소 개수가 적으면 개수에 따라 튜플(tuple), 트리플렛(triplet), 쿼텟(quartet) 등의 이름이 붙으며, 다른 이름을 붙일 수도 있다. tuple2, tuple3, tuple4 등의 이름을 선호하는 사람도 있다. 코틀린에는 PairTriple이 미리 정의되어 있다. 앞에서 함수 인자는 하나씩 차례로 적용되며 인자가 적용될 때마다 새로운 함수를 반환한다고 설명했다. 단, 맨 마지막 인자를 적용한 결과는 일반 값일 수도 있고 함수일 수도 있다.

이제 두 정수를 더하는 함수를 정의해 보자. 이 함수를 첫 번째 정수에 적용하면 새 함수를 반환할 것이다. 이 덧셈 함수의 타입은 다음과 같다.

(Int) -> (Int) -> Int

여기서 (Int)는 인자의 타입이며, (Int) -> Int는 반환되는 값의 타입이다. 이때 -> 기호의 결합 방향을 기억하기 위해 반환 값의 타입 주위에 다음과 같이 괄호가 있다고 생각할 수 있다.

(Int) -> ((Int) -> Int)

인자 타입은 Int이고 반환 타입은 Int 타입의 값을 인자로 받아 Int를 반환하는 함수다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.