gpt4 book ai didi

scala - 如何在一段距离 "in"(ala takeWhile)中启动 Scala 流?

转载 作者:行者123 更新时间:2023-12-01 10:02:21 24 4
gpt4 key购买 nike

问题Why does my takeWhile fail to work with my Stream清楚地表明 takeWhile() 是惰性的:

Stream.from(1).takeWhile(_ < 5) //Stream(1, ?) 

但是对于那个问题,解决方案似乎是可以使用 toList 来强制按需要求值。但是,如果您想要的不是列表或特定值,而是持续的 Stream 怎么办?

我似乎可以通过强制求值来做到这一点,直到找到所需的值,然后再次实例化 Stream 并使用 index 但肯定有更好的方法吗?

更新:显然我的措辞令人困惑;我想要 dropWhile 提供的解决方案。

最佳答案

你可以使用span:

scala> val (before, after) = Stream.from(1).span(_ < 5)
before: scala.collection.immutable.Stream[Int] = Stream(1, ?)
after: scala.collection.immutable.Stream[Int] = Stream(5, ?)

或者,如果您只关心“持续流”,dropWhile:

scala> val after = Stream.from(1).dropWhile(_ < 5)
after: scala.collection.immutable.Stream[Int] = Stream(5, ?)

关于scala - 如何在一段距离 "in"(ala takeWhile)中启动 Scala 流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11438640/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com