过滤之间有什么区别:Dart 中的Where 和 takeWhile

Mah*_*raa 3 dart

我看到它们(where和takeWhile)都有相同的功能..否则我可能会在这里错过一些东西!

jam*_*lin 8

的文档Iterable.where说:

返回一个新的惰性元素,Iterable其中包含满足谓词的所有test元素。

文档说Iterable.takeWhile:

返回满足 的前导元素的惰性可迭代test。

(强调已添加)。

换句话说,Iterable.takeWhile一旦到达第一个不满足test回调的项目,就会停止迭代。

一个具体的例子:

var list = [1, 1, 2, 3, 5, 8];
print(list.where((x) => x.isOdd).toList()); // Prints: [1, 1, 3, 5]
print(list.takeWhile((x) => x.isOdd).toList()); // Prints: [1, 1]
Run Code Online (Sandbox Code Playgroud)