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

 

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