我正在寻找一种方法来生成这种形式的scala流(相当于F#的序列):
let allRows resultSet : seq<Row> =
seq {
while resultSet.next() do
yield new Row(resultSet)
}在scala中有什么方法可以轻松做到这一点吗?我发现涉及(非尾递归)递归的唯一方式是,对于resultSet中的大量行,这将意味着一定的堆栈溢出。
谢谢
发布于 2015-11-27 14:53:08
假设你有这样的东西
trait ResultSet {
def next: Boolean
}
class Row(rs: ResultSet)您可以将您的函数定义为
def allRows(rs: ResultSet): Stream[Row] =
Stream.continually(if (rs.next) Some(new Row(rs)) else None)
.takeWhile(_.isDefined).map(_.get)https://stackoverflow.com/questions/33948795
复制相似问题