メインコンテンツにスキップ

1件の投稿件の投稿が「infix-functions」タグ付き

すべてのタグを見る

[Kotlin] 中置関数

· 2分の読み時間
Haril Song
Owner, Software Engineer at 42dot

Kotlinでは、中置関数と呼ばれる関数の定義方法があります。これは、Javaを主要な言語として使用していた時には想像もできなかった構文です。Kotlinを始めたばかりの方に向けて、これを紹介しましょう。

単一のパラメータを持つメンバー関数は、中置関数に変換することができます。

中置関数の代表的な例の一つに、標準ライブラリに含まれている to 関数があります。

val pair = "Ferrari" to "Katrina"
println(pair)
// (Ferrari, Katrina)

必要に応じて、to のような新しい中置関数を定義することもできます。例えば、Int を次のように拡張することができます:

infix fun Int.times(str: String) = str.repeat(this)
println(2 times "Hello ")
// Hello Hello

to を新しい中置関数 onto として再定義したい場合は、次のように書くことができます:

infix fun String.onto(other: String) = Pair(this, other)
val myPair = "McLaren" onto "Lucas"
println(myPair)
// (McLaren, Lucas)

このようなKotlinの構文により、非常に独特なコーディング方法が可能になります。

class Person(val name: String) {
val likedPeople = mutableListOf<Person>()

infix fun likes(other: Person) {
likedPeople.add(other)
}
}

fun main() {
val sophia = Person("Sophia")
val claudia = Person("Claudia")

sophia likes claudia // !!
}

参考

Kotlin Docs