Mar*_*one 7 android functional-programming kotlin
在Kotlin中,迭代Android Cursor对象并将结果放入列表的最佳方法是什么?
我自动转换的Java:
val list = ArrayList<String>()
while (c.moveToNext()) {
list.add(getStringFromCursor(c))
}
Run Code Online (Sandbox Code Playgroud)
有更惯用的方式吗?特别是,它可以在一个只读列表的单一分配中完成吗?例如...
val list = /*mystery*/.map(getStringFromCursor)
Run Code Online (Sandbox Code Playgroud)
......或其他一些安排,其中列表是完整的.
Mar*_*one 13
这就是我最终使用的kotlin.sequences.generateSequence
...
val list = generateSequence { if (c.moveToNext()) c else null }
.map { getStringFromCursor(it) }
.toList()
Run Code Online (Sandbox Code Playgroud)
我的第一次尝试有点短:
val list = (1 .. c.count).map {
c.moveToNext()
getStringFromCursor(c)
}
Run Code Online (Sandbox Code Playgroud)
两个版本都依赖于游标最初位于第一个记录之前.如果不是这样的话,第二个会抛出,而第一个会返回一个较短的列表.
归档时间: |
|
查看次数: |
4231 次 |
最近记录: |