サーチ…


備考

ダーツは真のオブジェクト指向言語なので、関数でさえもオブジェクトであり、タイプはFunctionです。つまり、関数を変数に代入したり、他の関数に引数として渡すことができます。 Dartクラスのインスタンスを関数であるかのように呼び出すこともできます。

名前付きパラメータを持つ関数

関数を定義するときは、{param1、param2、...}を使用して名前付きパラメータを指定します。

void enableFlags({bool bold, bool hidden}) {
  // ...
}

関数を呼び出すときに、paramName:valueを使用して名前付きパラメータを指定できます

enableFlags(bold: true, hidden: false);

関数スコープ

ダーツ関数は、匿名またはネスト宣言することもできます。たとえば、ネストされた関数を作成するには、既存のファンクションブロック内に新しいファンクションブロックを開くだけです

void outerFunction() {
  
    bool innerFunction() {
        /// Does stuff
    }
}

innerFunction関数はinnerFunction内部でのみ使用できるようになりouterFunction 。それ以外の機能は他にありません。

Dartの関数は匿名で宣言することもできます。これは関数の引数としてよく使われます。一般的な例は、 Listオブジェクトのsortメソッドです。このメソッドは、次のシグネチャを持つオプションの引数をとります。

int compare(E a, E b)

abが等しい場合、関数は0返さなければならないことを文書に記述している。 a < b場合は-1返し、 a > b場合a > b 1返します。

これを知ることで、無名関数を使って整数のリストをソートすることができます。

List<int> numbers = [4,1,3,5,7];

numbers.sort((int a, int b) {
   if(a == b) {
      return 0;
   } else if (a < b) {
      return -1;
   } else {
      return 1;
   }
});

匿名関数は以下のような識別子に束縛されることもあります:

Function intSorter = (int a, int b) {
   if(a == b) {
      return 0;
   } else if (a < b) {
      return -1;
   } else {
      return 1;
   }
}

通常の変数として使用される。

numbers.sort(intSorter);


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow