在java中你可以这样做:
Boolean foo = true;
for(int i=0; i<10 && foo; i++) {
doSomething();
}
Scala也可以吗?
答案 0 :(得分:3)
可能但不是最佳做法。如果foo == false或者中断,你想继续下一条记录吗? doSomething修改foo吗?看看scala api中的fold和forall
for (i <- 1 to 10 if foo) { doSomething() }
答案 1 :(得分:2)
您可以使用以下两个选项之一:
foo
变量过滤不需要的结果
var foo = true
for (i <- 0 to 9 if foo) {
doSomething()
if (<want to break?>) foo = false
}
break
:
import scala.util.control.Breaks._
breakable {
for (i <- 0 to 9) {
doSomething()
if (<want to break?>) break
}
}
...虽然我通常建议以更多的FP-ish / Scala方式塑造你的算法,并尽可能避免出现可变的状态或周期(以及它们中断)。
答案 2 :(得分:2)
val foo: Boolean = true
for{
i <- 0 until 10
if foo
} doSomething()