看如下脚本:
import util.control.Breaks._ object TelloWorld { def main(args:Array[String])={ println("hello world") breakable{ for(i<-1 to 10){ println(i) if(i>4) break} } println("alice") }}
scala并没有break关键字,但是Breaks包中的breakable方法实现了该功能,break后,程序直接跳出breakable块:
breakable 定义如下:
def breakable(op : =>Unit){
try{
op
}
catch{
case ex:BreakControl => if (ex ne breakException) throw ex
}
}
带有标签的break:
val inner = new Breaks val outer = new Breaks outer.breakable{ for(i<-1 to 5){ inner.breakable{ for(j<-'a' to 'e'){ if(i==1 && j=='c') inner.break else println(s"i:$i,j:$j") if(i==2 && j=='b') outer.break } } } }