Scala 優雅的break

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

 

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