我不完全确定这是可能的,我绝对不知道要搜索什么或如何简明扼要地解释它,但这似乎是一个很好的事情,如果可能的话我不会感到惊讶.
我想实例化一个列表,listOf()但不是提供列表的元素,而是提供一些代码来生成列表的元素.
例如,使用ResultSet :(这不是有效代码)
val list: List<Int> = listOf(
while(resultSet.next()){
return resultSet.getInt(1)
}
)
Run Code Online (Sandbox Code Playgroud)
这样的事情可能吗?
Jay*_*ard 12
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
Run Code Online (Sandbox Code Playgroud)
也可以看看: 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
Run Code Online (Sandbox Code Playgroud)
使用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()
Run Code Online (Sandbox Code Playgroud)
也可以看看: buildSequence()
| 归档时间: |
|
| 查看次数: |
1765 次 |
| 最近记录: |