gpt4 book ai didi

scala - 如何在 Scala for 循环中指定一个 'next' 函数

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

我有这样的代码片段:

val step = Step.Montyly  //this could be Yearly, daily, hourly, etc.
val (lower, upper) = (****, ****) //unix timestamps, which represent a time range
val timeArray = Array[Long](0)

var time = lower
while (time <= upper) {
timeArray +: = time
time = step.next(time) // eg, Step.Hourly.next(time) = time + 3600, Step.Monthly.next(time) = new DateTime(time).addMonths(1).toTimeStamp()
}

return timeArray

虽然这是用 Scala 编写的,但它是一种非功能性方式。我是 Scala 的新手,想知道是否可以用函数式的方式重写它。我知道以下内容:

for(i <- 1 to 10 by step) yield i

但是这里的step是一个固定值,如何让'i'可以由'next function'生成而不是一个固定值呢?

最佳答案

您必须稍微更改流程以使其正常运行(没有可变的 Arrayvar)。 Stream.iterate 使用初始起始值,并重复应用一个函数来生成下一个元素。

Stream.iterate(lower)(step.next).takeWhile(_ < upper)

关于scala - 如何在 Scala for 循环中指定一个 'next' 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40327243/

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