好きなタイミングで特定の処理を行う
好きなタイミングで特定の処理を行う
そういうとき、高階関数が便利です。
## フォーマット
関数型の指定は、以下のように書きます。
(引数の型[, 引数の型]...) -> 戻り値の型
## 使用例
#### 関数を引数として渡す
関数を引数として渡せば、振る舞いの定義だけすることが出来ます。
Ajaxのコールバックなどが好例です。
引数として関数オブジェクトを受け取るには、次のように書きます。
fun printResult(callee: (Int, Int) -> Int, val1: Int, val2: Int): String {
val result = callee(val1, val2)
return "Result : $result";
}
この例では、第一引数に関数を受け取るように定義しています。 受け取る関数は、第一、第二引数、戻り値ともにInt型を指定しています。
#### 関数を戻り値として受け取る
逆に関数オブジェクトを戻り値として受け取れば、好きなタイミングで 実行できます。
fun example2(val1: Int): (Int, Int) -> Int {
return {x, y -> (x + y) % val1};
}
関数型には引数で受け取る場合と同じ型を指定しています。
返す関数は関数リテラルで、クロージャーを使用して引数として渡された値を使用するように書いています。
最終更新日時:2017年1月23日