for-loop - kotlin,如何动态改变 for 循环速度
问题描述
有时基于某些条件,它可能想要在 for 循环内跳转(或向前移动)几步,
怎么办是科林?
一个简化的用例:
val datArray = arrayOf(1, 2, 3......)
/**
* start from the index to process some data, return how many data has been
consumed
*/
fun processData_1(startIndex: Int) : Int {
// process dataArray starting from the index of startIndex
// return the data it has processed
}
fun processData_2(startIndex: Int) : Int {
// process dataArray starting from the index of startIndex
// return the data it has processed
}
在 Java 中可能是:
for (int i=0; i<datArray.lenght-1; i++) {
int processed = processData_1(i);
i += processed; // jump a few steps for those have been processed, then start 2nd process
if (i<datArray.lenght-1) {
processed = processData_2(i);
i += processed;
}
}
如何在科特林中做到这一点?
for(i in array.indices){
val processed = processData(i);
// todo
}
解决方案
与while
:
var i = 0
while (i < datArray.length - 1) {
var processed = processData_1(i)
i += processed // jump a few steps for those have been processed, then start 2nd process
if (i < datArray.length - 1) {
processed = processData_2(i)
i += processed
}
i++
}
推荐阅读
- javascript - 如何发出服务器端 API 请求?
- javascript - 如何在本地渲染小胡子模板
- c - 为什么数组被认为是一种数据结构?
- python - 生成数字直到我得到 7,17,26,28,31,32
- c++ - 为什么 epoll 提供过去事件的数据?
- algorithm - 求 GCD 等于 1 的四联体数
- javascript - 如何使用 Javascript 选择 Xml 数据
- ios - Tableview 单元格未按预期覆盖整个区域
- swift - iOS 在使用 NSAttributedString 时更改 uilabel 的链接颜色
- python - 避免在 tensorflow while_loop 中重新分配内存