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。以上工作作为经验