scala教程:循环中断break和continue

介绍

Scala的循环中断,与C/C++/JAVA不同,没有 break、continue关键字,是通过 函数式 的风格解决实现的

break

从 0-9 循环打印,当遇到6时,就结束循环

import scala.util.control.Breaks

Breaks.breakable(
  for(i<- 0 until 10){
    if(i==6){
      Breaks.break()
    }
    println(i)
  }
)

省略写法

  1. 这种写法import scala.util.control.Breaks._,表示导入 Breaks 类的所有方法,在当前类中可以直接写 Breaks的方法,如:break()

  2. 在 scala 中,无参方法的小括号可以省略,所以 break(),可简写 break

import scala.util.control.Breaks._

breakable(
  for(i<- 0 until 10){
    if(i==6){
      break
    }
    println(i)
  }
)

底层实现

break() 和 breakable() 在 Breaks 类中

break() 底层实现

break() 就是在抛出异常,源代码如下:

def break(): Nothing = { throw breakException }

breakable() 底层实现

breakable() 就是 try{}catch(){},源代码如下:

def breakable(op: => Unit) {
    try {
      op
    } catch {
      case ex: BreakControl =>
        if (ex ne breakException) throw ex
    }
}

continue

scala 没有 continue 关键字 或 方法,实现的方式,是将 breakable() 写 for 语句里面

案例

从 0-9 循环打印,当遇到6时,就结束本次循环,进行下一次循环

import scala.util.control.Breaks._

for(i<- 0 until 10){
  breakable { // 换成 {},就可以写多个语句
    if (i == 6) {
      break
    }

    println(i)
  }
}

解释: 将 breakable() 的 小括号 (),换成 花括号 {},就可以写 多个语句


原文出处:/show_1IX1B0QXfrYc.html