首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Scala dropWhile vs过滤器

Scala dropWhile vs过滤器
EN

Stack Overflow用户
提问于 2018-07-30 02:32:49
回答 1查看 1.2K关注 0票数 2
代码语言:javascript
复制
val xs = Iterator
  .from(1)
  .dropWhile(_ % 2 != 0)
  .takeWhile(_ < 10)
  .toList
val ys = Iterator
  .from(1)
  .filter(_ % 2 == 0)
  .takeWhile(_ < 10)
  .toList
println(xs)
println(ys)

输出:

代码语言:javascript
复制
List(2, 3, 4, 5, 6, 7, 8, 9)
List(2, 4, 6, 8)

为什么?我期望两者的输出是相同的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-30 02:57:59

对于条件为true的集合,dropWhile将丢弃集合开头的所有项。一旦第一项不符合条件,它就会立即停止丢弃。

filter将丢弃整个集合中条件不为真的所有项。它不会停止,直到收集结束。

在您的示例中,dropWhile丢弃1,但在达到2时停止,因为条件_ % 2 != 0为false。

另一方面,filter会删除_ % 2 == 0为false的所有值,这些值都是奇数。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51583361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档