如何根据某些条件动态增加for循环变量。
例如。
var col = 10
for (i <- col until 10) {
if (Some condition)
i = i+2; // Reassignment to val, compile error
println(i)
}
scala是如何实现的。
答案 0 :(得分:2)
许多低级语言允许你通过C like for循环来实现,但这不是for循环的真正含义。在大多数语言中,当您事先知道(循环开始时)您将需要多少次迭代时,会使用for循环。否则,使用while循环。
你应该在scala中使用while循环。
var i = 0
while(i<10) {
if (Some condition)
i = i+2
println(i)
i+=1
}
答案 1 :(得分:0)
如果您不想使用可变变量,可以尝试使用此功能
def loop(start: Int) {
if (some condition) {
loop(start + 2)
} else {
loop(start - 1) // whatever you want to do.
}
}
正如普通的递归函数一样,你需要一些条件来打破流程,我只是想知道可以做些什么。
希望这有帮助!!!
答案 2 :(得分:-1)
理想情况下,您不会使用var
。 fold
与不可变值非常相似,无论是int,list,map ......
它允许您为要返回的变量设置默认值(例如0),并迭代值(例如i)在每次迭代时更改该值(例如累加器)。
val value = (1 to 10).fold(0)((loopVariable,i) => {
if(i == condition)
loopVariable+1
else
loopVariable
})
println(value)