Scala内置控制结构特地去掉了break和continue,是为了更好的适应函数式编程,推荐使用函数式的风格解决break和continue的功能,而不是一个关键字。scala中使用breakable控制结构来实现break和continue功能。
不过这种方式性能不是特别好,点开看源码是自己抛出异常自己捕获的.
案例
采用异常方式退出循环
def main(args: Array[String]): Unit = {
try {
for (elem <- 1 to 10) {
println(elem)
if (elem == 5) throw new RuntimeException
}
}catch {
case e =>
}
println("正常结束循环")
}
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放在循环内