関数をオブジェクトとして使う
関数をオブジェクトとして扱う
Kotlinでは関数をオブジェクトとして扱うことができます。
これによって、引数として受け取ったり、戻り値として返すことができます。
関数をオブジェクトとして扱う方法は3通りあります。
- 既に存在する関数から関数オブジェクトを取得する
- 関数リテラルで直接関数オブジェクトを作成する
- 関数式で直接関数オブジェクトを作成する
フォーマット
既存関数から関数オブジェクトを取得する場合
::関数名
関数リテラルで定義する場合
{ 引数 [, 引数]... -> 処理 }
関数式で定義する場合
fun(引数[, 引数]...) = 式
関数リテラル、関数式の場合は、引数、戻り値の型を指定して定義することもできます。
{ (引数 : 型[, 引数 : 型]...) -> 処理 }
fun(引数: 型[, 引数: 型]...): 型 = 式
実装サンプル
配列のフィルタ条件を関数オブジェクトとして定義する場合
val array = arrayOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
fun condition(x: Int): Boolean {
return x % 2 == 0
}
val even = array.filter(::condition) // 既存関数から関数オブジェクト取得(偶数を抽出)
val odd = array.filter({x -> x % 2 == 1}) // 関数リテラルで指定(奇数を抽出)
val small = array.filter(fun(x) = x <= 5) // 関数式で指定(5以下を抽出)
最終更新日時:2017年1月23日