無名関数
main()関数やprintElement()関数のように、ほとんどの関数は関数名を持っていますが、名前のない関数を定義することもできます。無名関数はラムダ関数やクロージャーとも呼ばれることもあります。
無名関数の定義方法は通常の名前のある関数と似ています。0個、あるいは一つ以上の引数をカンマ(,)で区切り、型注釈を記述することもできますし、型注釈を記述しなくても問題ありません。
sample1-1
var list = ['apples', 'bananas', 'oranges']; list.forEach((item) { print('${list.indexOf(item)}: $item'); }); list.forEach( (item) => print('${list.indexOf(item)}: $item') ); //0: apples //1: bananas //2: oranges //0: apples //1: bananas //2: oranges
sample1-1では型注釈のない引数itemを取る無名関数を定義しています。無名関数はリストの各要素を受け取り、インデックス番号と文字列を表示します。
sample1-1の後半にあるように、関数の本体が一文の時アロー構文を用いて記述することができます。
レキシカルスコープ(静的スコープ)
Dartはレキシカルスコープ(静的スコープ)の言語です。
工事中🏗
参考
https://dart.dev/guides/language/language-tour#built-in-types