private class BreakControl extends ControlThrowable
object test{
def main(args: Array[String]): Unit = {
val breakControl = new BreakControl
def mybreakable(op: =>Unit):Unit = {
//關於op: =>Unit,op:()=>Unit的區別 請參考 https://blog.csdn.net/weixin_44563670/article/details/113252970 關於Scala中的控制抽象,遇到的問題,op : =>Unit 和op : ()=>Unit的區別
// op: =>Unit是指一段代碼,這段代碼執行的結果是Unit
// op:()=>Unit是指一個參數,其類型是函數,這個函數無輸入參數,函數返回值是Unit
println("code start")
try{
op
}catch{
case b:BreakControl => if(b != breakControl) throw b
}
println("code end")
}
def mybreak():Nothing = {
throw breakControl;
}
mybreakable{
println("function is running.....")
}
mybreakable{
println("function is running..then break...")
for(i<-listvalue)
{
if (i == 3) mybreak
println(i)
}
}
}
顯示:
code start
function is running.....
code end
code start
function is running..then break...
1
2
code end