Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
kotlin不迭代?_Kotlin - Fatal编程技术网

kotlin不迭代?

kotlin不迭代?,kotlin,Kotlin,抱歉,这看起来很基本,但我遗漏了一些东西 我有一个方法签名覆盖 fun doSomeWork (range: IntProgression, j: Int): List<Cell>{ 打印“4到1,步骤=1” 但我似乎无法迭代范围?我试过一些方法 for (i in range) { println ("range: $i)" } 然后 for (i in range.first until range.last step range.step){ pr

抱歉,这看起来很基本,但我遗漏了一些东西

我有一个方法签名覆盖

fun doSomeWork (range: IntProgression, j: Int): List<Cell>{
打印“4到1,步骤=1”

但我似乎无法迭代范围?我试过一些方法

for (i in range) {
     println ("range: $i)"
}
然后

for (i in range.first until range.last step range.step){
        println ("Loop de loop $i")
    }
 range.forEach { println ("range foreach") }
(虽然我写了这个问题,但我注意到这是步骤1,而不是-1,这可能是这里的问题?但由于我希望能够在任意一个方向上通过,我没有检查)

然后

for (i in range.first until range.last step range.step){
        println ("Loop de loop $i")
    }
 range.forEach { println ("range foreach") }
他们没有打印任何东西,但他们不会抛出错误,因此之后的任何代码都能正常运行

有人能指出我为什么没能完成这个入门级任务吗

val range= IntProgression.fromClosedRange(1, 4, 1)

for (i in range)
println(i) // out put 1234

for (i in range.reversed())
    println(i)//out put 4321
使用

倒车档

  IntProgression.reversed()
详情请参阅

使用

倒车档

  IntProgression.reversed()

更多详细信息请参考,因此您需要一个
IntProgression
从4到1的步骤-1,即
IntProgression。从closedrange(4,1,-1)
或更好的方法:
4.向下到(1)
。当你写下你的问题时,你已经意识到这一步。。。但是起点不是
1
,而是
4
;-)这样的问题就不会出现了,因为函数负责方向,而且可读性也更高

还请注意,您可以简单地使用来反转进程:

range.reversed()
并在
for
-循环中或与
.forEach
等一起使用它

因此:


因此,您需要一个
IntProgression
从4到1的步骤-1,即
IntProgression.fromClosedRange(4,1,-1)
或更好的方法:
4.downtto(1)
。当你写下你的问题时,你已经意识到这一步。。。但是起点不是
1
,而是
4
;-)这样的问题就不会出现了,因为函数负责方向,而且可读性也更高

还请注意,您可以简单地使用来反转进程:

range.reversed()
并在
for
-循环中或与
.forEach
等一起使用它

因此:


forEach
方法可用于迭代
IntProgression
it
可用于获取值或索引

fun doSomeWork (range: IntProgression) {
    range.forEach {
        println(it)
    }
}
调用上述方法:-

ClassName().doSomeWork(IntProgression.fromClosedRange(1,10, 1))

forEach
方法可用于迭代
IntProgression
it
可用于获取值或索引

fun doSomeWork (range: IntProgression) {
    range.forEach {
        println(it)
    }
}
调用上述方法:-

ClassName().doSomeWork(IntProgression.fromClosedRange(1,10, 1))

因此,您需要步骤1中的
IntProgression
从1到4,即
IntProgression(1,4,1)
或步骤-1中的
IntProgression
从4到1,即
IntProgression(4,1,-1)
。当你写下你的问题时,你已经意识到这一步。。。但是起点不是
1
,而是
4
;-)所有这些都按预期工作:
val范围:IntProgression=1.downTo(0);range.forEach{println(it)};对于(范围内的i)println(i)
打印
1 0 1 0
。所以我的建议是,如果你仍然有问题,就发布一篇文章。好的,谢谢,我会玩一下,然后设定答案,但是尽管我可以用它作为“变通”的术语,但它让我需要在有趣的doSomeWork{}开始时确定范围参数的方向。除非问题是我初始化intProgression的方式(1..4或4..1)?我将尝试使用fromClosedRange…(好的,项目的一部分是输入4..1而不是4到1的打字错误)。。。您编写了函数,因此为它定义了契约。。。您不需要知道是否会出现一个步数错误的整数级数(1..4)或(4..1)。。。这是来电者的责任。。。。你只需要做你知道的和你能做的。。。。迭代它;-)因此,您需要步骤1中的
IntProgression
从1到4,即
IntProgression(1,4,1)
或步骤-1中的
IntProgression
从4到1,即
IntProgression(4,1,-1)
。当你写下你的问题时,你已经意识到这一步。。。但是起点不是
1
,而是
4
;-)所有这些都按预期工作:
val范围:IntProgression=1.downTo(0);range.forEach{println(it)};对于(范围内的i)println(i)
打印
1 0 1 0
。所以我的建议是,如果你仍然有问题,就发布一篇文章。好的,谢谢,我会玩一下,然后设定答案,但是尽管我可以用它作为“变通”的术语,但它让我需要在有趣的doSomeWork{}开始时确定范围参数的方向。除非问题是我初始化intProgression的方式(1..4或4..1)?我将尝试使用fromClosedRange…(好的,项目的一部分是输入4..1而不是4到1的打字错误)。。。您编写了函数,因此为它定义了契约。。。您不需要知道是否会出现一个步数错误的整数级数(1..4)或(4..1)。。。这是来电者的责任。。。。你只需要做你知道的和你能做的。。。。迭代它;-)您应该链接
反向
-函数,而不是粘贴它。。。否则,您可能会复制它而不是使用它。您应该链接
reversed
-函数,而不是粘贴它。。。否则人们可能会复制它,而不是使用它。感谢所有这一切似乎是最清晰的,尽管所有这些都回答了这个问题。我有一组when->调用函数,在最初的误解之后,我将其中一个保留为4..1,而不是4到1。上述操作与预期一样有效(将4向下传递到1而不是4..1),但请注意,对于范围,有一个很好的理由选择范围内i的
而不是
范围.forEach
,除非它在最新版本中已修复。当静态类型为
IntProgression
时,不确定它是否适用。尽管所有这些都回答了问题,但这似乎是最清楚的。我有一组when->调用函数,在最初的误解之后,我将其中一个保留为4..1,而不是4到1。以上工作作为经验