我正在尝试从 F# 迁移到 Scala。在 F# 中,我们可以轻松地创建带有计算表达式或 monad 的 seq。例如:
let myseq = seq {
let mutableList = List()
for i = 0 to 100 do
mutableList.append(i)
yield sum(mutableList)
}
myseq |> Seq.iter println
我阅读了有关 scala的信息Stream
,但我不确定如何正确使用它,例如上面的示例,其中包含一些在 seq 生成期间不断更新的状态。
另一个例子是在 seq 中做一些初始化和清理工作:
let myseq = seq {
let file = open(path)
while (x = read(file)) do
yield x
file.close() }
我们可以在scala中做到这一点吗?