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()
}