코틀린에서는 infix 키워드를 사용하여 중위 표기법으로 함수를 호출할 수 있습니다.
호출 조건
- 멤버 함수 또는 확장 함수여야 합니다
- 한 개의 파라미터만을 가져야 합니다
- 파라미터로 가변인자를 받을 수 없고, default 값을 가지는 인자가 없어야 합니다
public infix fun <A, B> A.to(that: B): Pair<A, B> = Pair(this, that)
Pair를 만들 때 사용되는 to 함수입니다. 제네릭 형태의 확장함수네요
val pair = 1.to("one")
원래대로하면 이런식으로 사용해야 하지만
val pair = 1 to "one"
to 함수는 infix function이기때문에 이런식으로 사용 할 수 있습니다.
장점
- 코드가 간결해진다
- 코드 가독성이 좋아진다
그럼 한 번 infix function을 만들어서 사용해볼게요
fun main(){
println(1 ascendingList 10)
println(10 descendingList 1)
}
infix fun Int.ascendingList(end: Int) : List<Int>{
val list = mutableListOf<Int>()
for(i in this..end){
list.add(i)
}
return list
}
infix fun Int.descendingList(end: Int) : List<Int>{
val list = mutableListOf<Int>()
for(i in this downTo end){
list.add(i)
}
return list
}
결과
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
start ~ end까지 오름차순, 내림차순으로 정수형 배열을 리턴해주는 함수를 infix function으로 정의해서 사용해봤습니다.