Search code examples
scalawhile-loopdo-while

Support of `do..while` Loop In scala


Hello everyone I am new to scala and after seeing the do..while syntax which is the following:

do{
    <action>
}while(condition)

I have been asked to perform this exercise which consists in predicting the output of a program containing the do..while loop.

var set = Set(1)
do {
  set = set + (set.max + 1)
} while (set.sum < 32)
println(set.size)

After execution I get the following error:

end of statement expected but 'do' found
    do {

I know that it is possible to convert this loop to while (which is even ideal), however I would like to know if the do..while loop still works in scala if yes, is it a syntax error (Because I searched on the net but I found the same syntax and no mention of this error)? if no, is there a version from which the loop is no longer supported?


Solution

  • You can still use do-while in Scala 2.13.10

    https://scastie.scala-lang.org/DmytroMitin/JcGnZS3DRle3jXIUiwkb0A

    In Scala 3 you can write do-while in while-do manner using Scala being expression-oriented (i.e. the last expression is what is returned from a block)

    while ({
      set = set + (set.max + 1)
      set.sum < 32
    }) {}
    

    https://scastie.scala-lang.org/DmytroMitin/JcGnZS3DRle3jXIUiwkb0A/2

    https://docs.scala-lang.org/scala3/reference/dropped-features/do-while.html