首页 > 解决方案 > 如何正确使用 Stream 的 iterate 和 takeWhile 构造?

问题描述

在 Scala 2.12.x 中,我有以下示例,但它没有产生预期的结果:

val result = Stream.iterate(0)(_ + 10).takeWhile(_ < 100)
println(result)

// outputs:
// Stream(0, ?)

// while I expected:
// Stream(0, 10, 20, 30, 40, 50, 60, 70, 80, 90, ?)

我在这里做错了什么?

标签: scalastream

解决方案


在将其转换为非惰性集合之前,您的流不会被具体化:

Stream.iterate(0)(_ + 10).takeWhile(_ < 100).toList

推荐阅读