for循环中的多个语句

时间:2014-10-02 18:20:25

标签: scala

在java中你可以这样做:

 Boolean foo = true;
 for(int i=0; i<10 && foo; i++) {
     doSomething();
 }

Scala也可以吗?

3 个答案:

答案 0 :(得分:3)

可能但不是最佳做法。如果foo == false或者中断,你想继续下一条记录吗? doSomething修改foo吗?看看scala api中的fold和forall

 for (i <- 1 to 10 if foo) { doSomething() }

答案 1 :(得分:2)

您可以使用以下两个选项之一:

  1. 使用您的foo变量过滤不需要的结果
  2. var foo = true
    for (i <- 0 to 9 if foo) {
        doSomething()
        if (<want to break?>) foo = false
    }
    
    1. 使用break
    2. 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()