Break Scala
Scala使用map的foreach过程中,发现无法中途break,必须全部遍历,对于达到一定条件即退出的程序很不友好,于是改变思路,找到几种退出循环的方法:
1.while循环使用Boolean
def outOfLoopByFlag_While() = {
// while循环
var flag = true
var num = 0
while(flag) {
num += 1
println(num)
if (num == 5) {
flag = false
}
}
}
通过flag控制,达到条件退出循环
2.for循环使用Boolean
def outOfLoopByFlag_For() = {
var flag = true
var num = 0
for (i <- 0 to 10 if flag) {
num += 1
println(num)
if (i == 5) flag = false
}
}
同理,for循环中加入if语句,达到条件修改flag判断条件即可
3.通过return退出函数
def outOfLoopByNest() {
for (i <- 0 to 10) {
if (i == 5) {
return
}
num += 1
println(num)
}
}
Tip:这里需要注意,如果写成如下形式:
def outOfLoopByNest() = {
...
}
就会提示need return value,无法编译,因此这个 "=" 需要特别注意一下~
4.通过scala util库的break类
def outOfLoopByBreak() = {
import scala.util.control.Breaks._
breakable {
for (i <- 0 until 10) {
if (i == 5) {
break
}
num += 1
println(num)
}
}
}
这里需要引入第三方类,通过breakable声明即可像python一样通过break关键字退出循环
最后上个Main函数,直接调用就可以跑上面的函数了:
var num = 0
def main(args: Array[String]): Unit = {
outOfLoopByFlag_While()
outOfLoopByFlag_For()
outOfLoopByNest()
outOfLoopByBreak()
}