如何在scala中动态增加循环变量?

问题描述 投票:1回答:3

如何根据某些条件动态增加for循环变量。

例如。

var col = 10

for (i <- col until 10) {

if (Some condition)
  i = i+2;   // Reassignment to val, compile error
  println(i)
}

如何在scala中实现。

scala loops
3个回答
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
}

0
投票

如果您不想使用可变变量,可以尝试使用功能方式

def loop(start: Int) {
    if (some condition) {
        loop(start + 2)
    } else {
        loop(start - 1) // whatever you want to do.
    }
}

并且作为正常的递归函数,你需要一些条件来打破流程,我只是想知道可以做些什么。

希望这可以帮助!!!


-1
投票

理想情况下,你不会使用varfold与不可变值非常相似,无论是int,list,map ......

它允许您为要返回的变量设置默认值(例如0),并迭代值(例如i)在每次迭代时更改该值(例如累加器)。

val value = (1 to 10).fold(0)((loopVariable,i) => {    
   if(i == condition)
      loopVariable+1    
   else
      loopVariable 
})

println(value)

Example

© www.soinside.com 2019 - 2024. All rights reserved.