抱歉,这看起来很基本,但我错过了一些东西
我有一个方法签名覆盖
fun doSomeWork (range: IntProgression, j: Int): List<Cell>{
Run Code Online (Sandbox Code Playgroud)
我想迭代范围,无论它是什么(可以是向上或向下,比如 1 到 4 或 4 到 1)。该范围本身似乎有效,所以在我的 4 到 1 示例中
println (range.first.toString() + " to " + range.last.toString() + ", step = " + range.step)
Run Code Online (Sandbox Code Playgroud)
打印“4 比 1,步长 = 1”
但我似乎无法迭代范围?我尝试过一些事情
for (i in range) {
println ("range: $i)"
}
Run Code Online (Sandbox Code Playgroud)
进而
for (i in range.first until range.last step range.step){
println ("Loop de loop $i")
}
Run Code Online (Sandbox Code Playgroud)
(虽然写这个问题时我注意到它是步骤1而不是-1,这可能是这里的问题?但因为我希望能够在任一方向的范围内通过,所以我没有检查)
进而
range.forEach { println ("range foreach") }
Run Code Online (Sandbox Code Playgroud)
它们都不会打印任何内容,但它们不会抛出错误,因此之后的任何代码都可以正常运行。
谁能指出为什么我无法完成这项入门级任务?!
所以你想要一个IntProgression从 4 到 1 的步骤 -1,即IntProgression.fromClosedRange(4, 1, -1)或者更好:4.downTo(1)。当你写下你的问题时,你已经意识到了这个步骤......但起点不是1那时,而是4;-)downTo这样的问题不会出现,因为该函数会处理方向,并且那时也更具可读性。
另请注意,您可以简单地使用reversed来反转进程:
range.reversed()
Run Code Online (Sandbox Code Playgroud)
并在for-loop 或 with.forEach等中使用它。
所以:
val range = IntProgression.fromClosedRange(1, 4, 1)
range.forEach(::print) // prints: 1234
range.reversed().forEach(::print) // prints: 4321
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
773 次 |
| 最近记录: |