scala循環裏面的break功能

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
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章