I've got a set of rows in a database, and I'd like to provide an interface to spin through them like this:
def findAll: Iterable[MyObject]
Where we don't require having all the instances in memory at once. In C# you can easily create generators like this using yield, the compiler takes care of converting code that loops through the recordset into an iterator (sort of inverting it).
My current code looks like this:
def findAll: List[MyObject] = {
val rs = getRs
val values = new ListBuffer[MyObject]
while ( rs.next() )
values += new valueFromResultSet(rs)
values.toList
}
Is there a way I could convert this to not store the entire set in memory? Perhaps I could use a for comprehension?