【 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でもできますよね。

ただこれを使用すると開発規模が大きくなった時に制御できなくなるんではないかと心配しております。

最後に

関数のお話はここまででした。

今日はここまで!