Sagar Vaghela
Sagar Vaghela

Reputation: 1265

How to increment for loop variable dynamically in scala?

How to increment for-loop variable dynamically as per some condition.

For example.

var col = 10

for (i <- col until 10) {

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

How it is possible in scala.

Upvotes: 5

Views: 4334

Answers (3)

Painy James
Painy James

Reputation: 824

Ideally, you wouldn't use var for this. fold works pretty well with immutable values, whether it is an int, list, map...

It lets you set a default value (e.g. 0) to the variable you want to return and also iterate through the values(e.g i) changing that value (e.g accumulator) on every iteration.

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

println(value)

Example

Upvotes: -1

Arpit Suthar
Arpit Suthar

Reputation: 754

If you dont want to use mutable variables you can try functional way for this

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

And as normal recursion function you'll need some condition to break the flow, I just wanted to give an idea of what can be done.

Hope this helps!!!

Upvotes: 0

Oli
Oli

Reputation: 10406

Lots of low level languages allow you to do that via the C like for loop but that's not what a for loop is really meant for. In most languages, a for loop is used when you know in advance (when the loop starts) how many iterations you will need. Otherwise, a while loop is used.

You should use a while loop for that in scala.

var i = 0
while(i<10) {
    if (Some condition)
        i = i+2
    println(i)
    i+=1
}

Upvotes: 2

Related Questions