【 Flutter 】Flutter を 基礎 から 学習 ( Dart編 ) part10 関数
「基礎 から 学ぶ Flutter 」という書籍で 学習 したことを ブログでアウトプットしていこうと思います。今回は Dart編 ( part10 )です。
前回
【 Flutter 】Flutter を 基礎 から 学習 ( Dart編 ) part09 関数
今回は関数の続きになります。
関数(メソッド?)の書き方
クロージャ
これ、別の言語でも使用される言葉なのですがなかなか説明することが難しいです。
値を保持した関数を返す関数
ということでいいでしょうか。
本書でも述べているのですが、「値を保持している」という点が重要かと思います。
こちらにJavaScriptの例で説明がありました。
なぜクロージャ(Closure)と言うのか? – Qiita
つまり「関数用意してラムダ
を使う」ことが、クロージャを使っていることになるということでしょうか?
Function makeAdder(num addBy) {
return (num i) => addBy + i;
}
void main() {
var add2 = makeAdder(2);
var add4 = makeAdder(4);
print(add2(3) == 5); // true
print(add4(3) == 7); // true
// ※これは???
var hoge = 6;
add6 (num i) => hoge + i;
hoge = 7;
print(add6(3) == 9); // なんとfalseです。
}
上記※の実装ではfalse
となりました。
これも「値を保持している」ということになるんですかね?
関数拡張
この実装はなじみ深いですね。C#では「メソッド拡張」と呼んでいる機能に近いと思います。
RubyでもPythonでもできますよね。
ただこれを使用すると開発規模が大きくなった時に制御できなくなるんではないかと心配しております。
最後に
関数のお話はここまででした。
今日はここまで!
ディスカッション
コメント一覧
まだ、コメントがありません