Kotlin 中置記法関数(Infix functions)

中置記法関数(infix)

infixは中置記法に対応した関数を定義する。次の例では、Intクラスにadd関数を拡張定義している。3.add(5)のように呼び出すこともでき、infixが付いているため3 add 5のように中置記法で使用することもできる。このように定義された中置記法関数には、Rangeを生成するuntilや、Pairを生成するtoなどがある。

infix fun Int.add(x: Int): Int {
    return this + x
}

fun main() {
    println(3.add(5))		// 8
    println(3 add 5)		// 8
}

Infix関数とは、2つの変数の間に来る関数のことである。Kotlinで標準定義されているInfix関数の中には、Pairを作るtoがある。

次のコードを見てみよう。

val pair : Pair<String, String> = "White" to "0xffffff"

"White""0xffffff"オブジェクトの間にあるtoがInfix関数である。toは左右のオブジェクトからPairオブジェクトを作成している。

/**
 * infixで宣言された中置関数
 *
 * Intを拡張してmultiply()関数を追加した。
 */
infix fun Int.multiply(x: Int): Int {
    return this * x
}

fun main() {
    // 通常の表現
    val multiply1 = 3.multiply(10)
    println("multiply1: $multiply1")

    // 中置表現
    val multiply2 = 3 multiply 10
    println("multiply2: $multiply2")
}

Output:

multiply1: 30
multiply2: 30

参考