scala 语法中没有像 java 一样通过 break 和continue 关键字实现循环中断,为了更好地实现函数式思想,可以通过break()和breakable函数实现同样的功能。
break实现,拿例子说话
def main(args: Array[String]): Unit = {
Breaks.breakable{
for(i <- 1 to(10) if i%2==0 ) {
println(i)
Breaks.break()
}
}
println("ok~")
}
//源码
def break(): Nothing = { throw breakException }
def breakable(op: => Unit) {
try {
op
} catch {
case ex: BreakControl =>
if (ex ne breakException) throw ex
}
}
break()函数其实就只是抛出了个 breakException 异常,
而breakable 函数接受的是一个没有参数和没有返回值的代码块,同时捕获 breakException 异常
continue 如何实现的呢
//通过守卫实现
def main(args: Array[String]): Unit = {
for (i<- 1 to 10 if(i !=4 && i!=7)) {
println(i)
}
}
// 改写成if-else 的实现方式
def main(args: Array[String]): Unit = {
for (i <- 1 to 10) {
if (i != 4 && i != 7) println(i)
}
}
超超超级基础记知识,没事儿记个小笔记
文章来源:智云一二三科技
文章标题:scala 如何实现break/continue的
文章地址:https://www.zhihuclub.com/195356.shtml