Ответ 1
Ответ зависит от того, нужен ли вам код так же быстро, как и на Java.
Если вы просто хотите, чтобы он работал, вы можете использовать:
for (i <- 10 until 0 by -2) println(i);
(где until
означает опустить окончательную запись, а to
означает включение окончательной записи, как если бы вы использовали >
или >=
).
Однако для этого будут некоторые скромные накладные расходы; цикл for
является более общей конструкцией в Scala, чем в Java, и хотя он может быть оптимизирован в принципе, на практике он еще не (не в основном распределении через 2.9; плагин ScalaCL, вероятно, оптимизирует его для вас, однако).
Для println печать займет гораздо больше времени, чем цикл, так что все в порядке. Но в узком круге, который, как вы знаете, является узким местом производительности, вам нужно использовать вместо этого циклы:
var i = 10
while (i > 0) {
println(i)
i -= 2
}