-
Notifications
You must be signed in to change notification settings - Fork 0
mapOf() 메소드의 to가 Kotlin Keyword가 아니라고?
이진혁 edited this page Jun 9, 2021
·
1 revision
Map
자료구조를 만들기 위해서 흔히 사용하는 mapOf()
메소드에서는 매개변수로 Pair
가변인자를 받습니다.
그런데 실제로 사용할 때는 Pair
객체를 만드는 것이 아니라 보통 to
키워드를 이용해서 사용합니다.
하지만 여기서 사용되는 to
키워드는 키워드가 아니라 메소드입니다.
코틀린에서는 중위 호출
이라는 기능을 지원합니다.
이는 메소드의 매개변수가 하나일 경우 메소드 호출시 필요한 .(점)
과 ()(괄호)
를 제거할 수 있는 기능입니다.
따라서 다음과 같이 사용이 가능합니다.
mapOf(1 to "apple", 2 to "banana", 3 to "melon")
이 중위 호출 기능은 infix
라는 키워드를 통해 실현 가능합니다.
실제로 to()
메소드는 다음과 같이 구현되어 있습니다.
infix fun Any.to(other:Any) = Pair(this, other)
수신자와 매개변수가 모두 Int
타입일 때만 사용할 수 있으며,
두 숫자를 합쳐서 리턴하는 확장 함수를 만들어보겠습니다.
infix fun Int.plus(operand: Int) = this + operand
여기서 주의할 점은 매개변수가 반드시 하나만 있어야 한다는 것입니다.
mapOf()
메소드를 사용할 때 사용했던 to
키워드는 키워드가 아니라 중위 호출을 한 확장 함수입니다.