【学習kotlinシリーズ】クロージャ
Qiitaでことりん学習帳を発売しています!
Golangでのクロージャの通り、「ローカル変数内を参照している関数内の関数」のこと。相変わらずわかりづらい説明なので、実例で。
実際に書いてみる
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
//クロージャ fun counter(): () -> Int { var count = 0 // ラムダ式で記述 return { count++ } } fun main(args: Array<String>){ val c = counter() println(c()) println(c()) println(c()) } |
実行結果
1 2 3 |
0 1 2 |
関数を実行するたびに関数内の変数が1ずつ増えていく。main関数内でcounter関数内の変数を参照できていることがわかる。