2017-01-27 16 views
4
var fruits = ['apples', 'oranges', 'bananas']; 
fruits[0]; // apples 
fruits.add('pears'); 
fruits.length == 4; 
fruits.where((f) => f.startsWith('a')).toList(); 

ドキュメントの例は、上記を示しています。 私は実際にこのメソッドのドキュメントも理解していません。Google Dart:.where()関数はどのように機能しますか?

https://api.dartlang.org/stable/1.21.1/dart-collection/IterableMixin/where.html

私は現在、引数Fを有する場合と、内部パラメータとしてラムダ関数を参照してください。しかし、何ですか?私はちょっと混乱しています。

実例を見ることができたらうれしいです。今のところ私はそれを本当に手に入れません。私はそれがどのように動作するか、それが何らかのフィルタとして機能するということとは別に何をしているのか分かりません。

答えて

4

は匿名関数であり、fは、それが唯一の機能はtrue

を返された値を発することfruits内の各要素のための機能を渡され、反復可能を返し

(f) => f.startsWith('a') 

where(...)呼び出しを受け入れるパラメータであり、 where(...)が遅延しているため、渡された関数の反復と呼び出しは、結果が実際にアクセスされたときにのみ発生します(.toList()など)。

DartPad example

更新

"匿名" も

myFilter(f) => f.startsWith('a'); 

だけである関数は

myFilter(f) => f.startsWith('a'); 

main() { 
    fruits.where(myFilter).toList(); 
} 

のような名前の関数に反しで名前を持たないことを意味短い形式

myFilter(f) { 
    return f.startsWith('a'); 
} 
+0

私は本当にそれを取得しません。ラムダ式は呼び出されない限り何もしません。匿名はjsと同じ意味ですか?それはそれを呼びますか? – Asperger

+0

私はダーツパッドで試したことを誓っていますが、なぜあなたの例ではうまくいきますか? Hmはそれを点検しなければなりません – Asperger

+0

私はこれらのコレクションを意味します、交差点等は本当にクールですが、便宜のためだけです?つまり、x [i] [0] == 'a' – Asperger

関連する問題