코틀린에서는 함수에 infix 키워드를 붙여 메소드로 중위호출을 할 수 있습니다

 

public infix fun <A, B> A.to(that: B): Pair<A, B> = Pair(this, that)

예를 들면 Pair를 만드는 to 메소드가 있습니다

 

val numToEng = mapOf(
    1 to "one",
    7 to "seven",
    100 to "hundred",
)

이런식으로 맵에 들어갈 key value 페어를 만들 때 사용하는 걸 예를 들 수 있습니다

코틀린엔 이런식으로 중위호출 하는 확장함수가 많아서 편리합니다

 

주의사항

1 shl 2 + 3            // == 1 shl (2 + 3)
0 until n * 2          // == 0 until (n * 2)
xs union ys as Set<*>  // == xs union (ys as Set<*>)

중위호출은 산술연산, 타입 캐스팅, rangeTo 오퍼레이터보다 낮은 우선순위를 갖고 있습니다

 

a && b xor c  // == a && (b xor c)
a xor b in c  // == (a xor b) in c

반면 bool 연산(&&, ||), is, in과 기타 연산자들보다는 높은 우선순위를 갖고있다고 합니다

헷갈리니 이런 부분은 괄호를 넣는게 좋을 것 같네요

 

Reference

- https://kotlinlang.org/docs/functions.html#infix-notation

반응형