从ResultSet生成列表
我不完全确定这是可能的,我绝对不知道要搜索什么或者如何简洁地解释它,但是这似乎是相当可怕的事情,如果可能的话,我不会感到惊讶。
我想用listOf()
实例化一个列表,而不是为列表提供元素,提供一些代码来生成列表的元素。
例如,使用ResultSet :(这不是有效的代码)
val list: List<Int> = listOf( while(resultSet.next()){ return resultSet.getInt(1) } )
是这样的可能吗?
ResultSet
没有用于执行此类转换的最佳界面。 但它看起来像这样:
val list = resultSet.use { generateSequence { if (resultSet.next()) resultSet.getInt(1) else null }.toList() // must be inside the use() block } // resultSet is already closed automatically at this point
另请参阅: generateSequence()
如果你想把它作为一个Sequence
而不是List
来懒散地处理,你不能使用.use()
自动关闭帮助器。
val seq = generateSequence { if (resultSet.next()) resultSet.getInt(1) else null } // later remember to call resultSet.close(), since the resultSet is still open
使用Kotlin 1.1实验协同程序,您可以:
val seq = buildSequence { while (resultSet.next()) { yield(resultSet.getInt(1)) } // resultSet.close() might work ok here } // if not, later remember to resultSet.close()
另见: buildSequence()
刚刚发生,我也可以使用generateSequence
。 道具到Jayson更快到达^^
这是我想出的(没有测试,但相当短):
val list = generateSequence { if(!resultSet.next()) null else resultSet.getInt(1) }.toList()