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()
をあなたの代わりにList
のSequence
が遅延し、それを処理するためにそのままにしたい場合は、あなたが使用することはできませんが、それは次のようになります.use()
自動閉鎖ヘルパー。 Kotlin 1.1することができます実験coroutinesで
val seq = generateSequence {
if (resultSet.next()) resultSet.getInt(1) else null
}
// later remember to call resultSet.close(), since the resultSet is still open
:
val seq = buildSequence {
while (resultSet.next()) {
yield(resultSet.getInt(1))
}
// resultSet.close() might work ok here
}
// if not, later remember to resultSet.close()
も参照してください:buildSequence()
あなたはに 'ResultSet'をマッピングするための一般的な解決策が必要な場合'Iterable'や' List'のように、拡張機能を定義する方法はいくつかあります。さもなければ、 'ResultSet'はKotlinで扱いやすいこれらのインターフェースを拡張しないので、これを一度だけ行う必要があれば、セットを反復し、すべての要素を変更可能なリストに追加するという簡単な解決策はおそらく一番いい。 – zsmb13
@ zsmb13ええ、私は拡張機能を追加し、このケースで提案したように実装しましたが、私の質問は、この具体的なユースケースによって促された好奇心から、ResultSet –