Scala:读入结果集,比如while yield?

Scala:读入结果集,比如while yield?,scala,while-loop,yield,Scala,While Loop,Yield,我正在使用Scala,并且有一个包含未知数量元素的。我想在集合中循环,处理每一行,最后得到一个处理过的元素数组。函数rs.next()将指针移动到下一个元素,如果该元素是有意义的行,则返回true;如果该元素不是有意义的行,则返回false(在最后一行之后,或返回的开头为空)。因此,尽管有以下几点,我还是希望结构如下: while (rs.next()) yield new foo(rs) 我试着回答,就像这样: if (rs.next()) Iterator.continually(new

我正在使用Scala,并且有一个包含未知数量元素的。我想在集合中循环,处理每一行,最后得到一个处理过的元素数组。函数
rs.next()
将指针移动到下一个元素,如果该元素是有意义的行,则返回
true
;如果该元素不是有意义的行,则返回
false
(在最后一行之后,或返回的开头为空)。因此,尽管有以下几点,我还是希望结构如下:

while (rs.next()) yield new foo(rs)
我试着回答,就像这样:

if (rs.next()) Iterator.continually(new foo(rs)).takeWhile(rs.next())
但这不起作用,因为元素是在检查条件之前创建的,其行为就像do-while,必须处理第一个坏元素。如前所述,它将使用resultset的最后一个元素创建一个
foo
,但不返回它,并且需要初始的
rs.next()
才能开始

我有多种其他方法来解决这个问题:另一个查询来计算元素的数量,然后使用
take
,使用一个设置为等于rs.next()的布尔变量,然后用于返回null元素(如果为false),还用于
takeWhile
,这是一个在while循环中添加到的可变集合,等等


但我觉得我肯定错过了什么,因为这些解决方案中的某些部分让人觉得不雅观。是否有一个简单的函数构造可以重复检查条件,创建一个元素添加到迭代器中,只要条件为真?

类似于?@PeterNeyens是的,谢谢!这正是我想要的,而且看起来非常可重复使用。像什么?@PeterNeyens是的,谢谢!这正是我想要的,看起来非常可重复使用。