gpt4 book ai didi

scala - Scala 中的更大循环

转载 作者:行者123 更新时间:2023-12-04 22:21:24 25 4
gpt4 key购买 nike

我正在使用 Scala 创建一个程序,但是我遇到了循环可以执行多少次迭代的问题。在 Scala 中进行函数式编程和编程时,我仍然很陌生,但这就是我目前所拥有的:

val s = Range(1, 999999999).view.foldLeft(0)(_ + _ / whatever);

但是我无法让循​​环说比 999999999 大几个数量级,比如在 long 的最大值中。我知道我可以使用 for 循环,但我看不到折叠选项。

有谁知道这是如何实现的?

谢谢。

最佳答案

正如您所发现的,Seqs 不能包含多个 Int.MaxValue 元素。在 feature 修复之前,不要使用 Seq。你可以

1)使用while循环

2) 使用 for-loop without a sequence

但是通过这些方式,你不能在你的例子中使用像 foldLeft 这样的 Scala 集合的方法。

所以你需要的是一个 Iterator 。例如

def bigIterator(start: BigInt, end: BigInt, step: BigInt = 1) = 
Iterator.iterate(start)(_ + step).takeWhile(_ <= end)

然后
bigIterator(0, BigInt("3000000000")).foldLeft(BigInt(0))(_ + _)

等会起作用。注意:如果您不需要完整范围的 BigInt ,请改用 Long ,因为它明显更快。

关于scala - Scala 中的更大循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17965448/

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