ラムダ式
{ }内の最後の部分が戻り値
//ラムダ式 (関数型)
// (Int) -> Int 関数のパラメータ型と戻り型
// { a: Int -> a * 3 }の部分がラムダ関数
val triple: (Int) -> Int = { a: Int -> a * 3 }
println(triple(5))
// ラムダ式の省略型
// itの部分はパラメータ
val triple: (Int) -> Int = { it * 3 }
println(triple(5))
高階関数
関数(ラムダ)を別の関数に渡すこと、または関数から別の関数を返すこと
// ラムダ式をfilter関数に渡す例
peopleAges.filter { it.key.length < 4 }
// パラメータとラムダ式を関数に渡す例
val peopleNames = listOf("Fred", "Ann", "Barbara", "Joe")
println(peopleNames.sortedWith { str1: String, str2: String -> str1.length - str2.length })
// 単一の抽象メソッドの引数と戻り型が同じ時の例
// View.OnClickListenerの単一抽象メソッドはonClickメソッドで、これらはViewを引数にとり戻りなしで共通
calculateButton.setOnClickListener(Object: View.OnClickListener {
override fun onClick(view View?){
calculateTip()
}
})
// これを高階関数で省略すると
calculateButton.setOnClickListener{view -> calculateTip() }
// ラムダのviewパラメータは使用しないので更に省略すると
calculateButton.setOnClickListener{ calculateTip() }
トレーニング > KOTLIN を用いた ANDROID の基本 > ナビゲーション > 画面の移動 > Kotlinのコレクション > 4. ラムダ式と高階関数の詳細