【问题标题】:What is difference between filtering: Where and takeWhile in Dart过滤之间有什么区别:Dart 中的 Where 和 takeWhile
【发布时间】:2021-05-06 07:48:42
【问题描述】:

我看到他们两个(wheretakeWhile)具有相同的功能.. 否则我可能会在这里错过一些东西!

【问题讨论】:

  • 虽然我猜还没有人发布过这个关于 Dart 的问题,但我必须说这种区别并不是那么微妙或令人惊讶。任何看过类似(并且非常广为人知的)LINQStreams API 以及可能其他 API 的人都应该非常熟悉它。正如@jamesdlin 向我们展示的那样,在 Dart 文档中也很清楚。

标签: dart


【解决方案1】:

documentation for Iterable.where 说:

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

documentation Iterable.takeWhile 说:

返回满足 testleading 元素的惰性迭代。

(强调)。

换句话说,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]

【讨论】:

  • 糟糕 :) 老实说,我没有意识到这一点 .. 因为 new 这个词让我认为它适用于 takeWhile 上的同一个 Iterable 而 where 返回 new .. 感谢提出这一点.我删除了我的答案,因为它完全错误:)
猜你喜欢
  • 2020-07-07
  • 2016-02-26
  • 1970-01-01
  • 1970-01-01
  • 2020-08-16
  • 2019-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多