【发布时间】:2015-11-27 00:31:21
【问题描述】:
我正在寻找一种方法来生成这种形式的 scala 流(相当于 F# 的序列):
let allRows resultSet : seq<Row> =
seq {
while resultSet.next() do
yield new Row(resultSet)
}
有没有办法在 scala 中轻松做到这一点?我发现涉及(非尾递归)递归的唯一方法,对于resultSet 中的大量行,这意味着某些堆栈溢出。
谢谢
【问题讨论】:
-
您确定要使用 Scala Stream 吗?延迟计算后,它将所有结果保存在内存中。听起来 F# 序列更类似于 Scala 迭代器,它一次懒惰地产生一个值,只保留内存中的当前值。
-
我正在寻找与 F# 序列相同的行为。我的印象是,它们在 Scala 中的等价物大致是 Streams(它们的合同似乎在某种程度上暗示了它们的懒惰性质)。我错了吗?
标签: scala f# functional-programming