Google Dart:.where()函数如何工作?

时间:2017-01-27 09:14:22

标签: dart

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

文档中的示例显示了上述内容。 我也不太了解该方法的文档。

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

我目前看到lambda函数作为参数在哪里,其中有参数f。什么是f?我有点困惑。

如果我能看到一个有效的例子,那就太好了。现在看来,我真的不明白。我不知道它是如何工作的,或者除了它作为某种过滤器之外还有什么作用。

1 个答案:

答案 0 :(得分:4)

是匿名函数,f是它接受的参数

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

where(...)调用为fruits中的每个元素传递函数,并返回一个只发出函数返回的值的true

where(...)是懒惰的,因此传递函数的迭代和调用只会在实际访问结果时发生,例如.toList()

DartPad example

<强>更新

&#34;匿名&#34;表示该函数没有与

之类的命名函数相反的名称
myFilter(f) => f.startsWith('a');

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

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

只是

的缩写形式
myFilter(f) {
  return f.startsWith('a');
}