Kotlinには拡張関数という仕組みがあり、既存のクラスにメソッドを追加することが可能です。
例えば以下コードでは、Int型にsum()メソッドを追加しています。
fun Int.sum(num: Int): Int {
return this + num
}
その結果、以下のような記述が可能になります。
val answer = 1.sum(2) println(answer) // 3が出力される
このような関数の書き方を「関数リテラル」と言い、関数の中で記述される「this」をレシーバと言います。(例でいう1)
なお最初のコードは、以下のように記述することも可能です。
val sum: Int.(Int) -> Int = fun Int.(num): Int {
return this + num
}
:の後のInt.(Int) -> Intは関数の引数と返り値の型で、()内のIntは引数であるnumの型を、->の後のIntは返り値の型を表しています。