Scala内置控制结构特地去掉了break和continue,是为了更好的适应函数式编程,推荐使用函数式的风格解决break和continue的功能,而不是一个关键字。scala中使用breakable控制结构来实现break和continue功能。

不过这种方式性能不是特别好,点开看源码是自己抛出异常自己捕获的.

案例

采用异常方式退出循环

  1. def main(args: Array[String]): Unit = {
  2. try {
  3. for (elem <- 1 to 10) {
  4. println(elem)
  5. if (elem == 5) throw new RuntimeException
  6. }
  7. }catch {
  8. case e =>
  9. }
  10. println("正常结束循环")
  11. }

break

循环遍历10以内的所有数据,数值为5,结束循环(break)

import scala.util.control.Breaks

object For3 {
  def main(args: Array[String]): Unit = {

    var n = 1

    Breaks.breakable {

      while (n < 10) {

        println("n=" + n)
        n += 1

        if (n == 5) {
          Breaks.break()
        }
      }
    }

    println("exit")
  }
}

输出

n=1
n=2
n=3
n=4
exit

continue

循环遍历10以内的所有数据,奇数打印,偶数跳过(continue)

import scala.util.control.Breaks

object For3 {
  def main(args: Array[String]): Unit = {
    var n = 0
    while (n < 10) {

      Breaks.breakable {
        n += 1
        if (n % 2 != 0) {
          println(n)
        } else {
          println("continue")
          Breaks.break()
        }
      }
    }
  }
}

输出

1
continue
3
continue
5
continue
7
continue
9
continue

注意事项

(1)break:breakable放在循环外

(2)continue:breakable放在循环内