scala - 如何正确使用 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, ?)
我在这里做错了什么?
解决方案
在将其转换为非惰性集合之前,您的流不会被具体化:
Stream.iterate(0)(_ + 10).takeWhile(_ < 100).toList
推荐阅读
- integration - 如何为新的 Okta 应用集成添加自定义字段?
- c# - 在弹性搜索和嵌套中传递和比较日期时间值与不同时区
- javascript - 等待两个单独的 Promise 解决,以便更新状态
- spring-data-mongodb - 查询spring data mongodb中嵌入文档的数组
- anaconda - 为什么康达不起作用?Python、jupyter、anaconda navigator 等工作正常
- arrays - 将简单数组转换为数字键和值
- java - 反序列化自定义对象的序列化 ArrayList,添加对象,然后重新序列化
- python - 如何使用 python open-cv 获取图像名称
- bluetooth-lowenergy - createCharacteristic 具有 3 个或更多特性的 BLE 应用程序?
- testing - 在 JSON 测试用例中读取额外的属性或主机地址