|
delegate(int x, int y) { return x + y; }これと同様の機能を持つラムダ式は、次のように書かれる。
(x, y) => x + yつまり、f(x)=x+1をx => x+1と書けるというものである。
[](int x, int y) { return x + y; }このラムダ式の返却値の型は、return文に書かれているx+yの型、つまりdecltype(x+y)である。
[](int x, int y) -> int { return x + y; }クロージャー変数の定義も可能。
int n = 123;
[n](int x) -> int { return x * n; }
val sum = { x: Int, y: Int -> x + y }つまり、{ 引数 -> 関数の中身 } のように記述することになる。{}内の引数の変数の型はオプションであり、推論可能な場合は省略できる。
val sum: (Int, Int) -> Int = { x, y -> x + y }KotlinでAndroidプログラミングをする場合、例えばリスナーを設定する関数ごとに想定されたメソッドを使う場合には一々overrideの関数を書いたりする必要なく、ラムダ式を与えるだけで済む。