您现在的位置是:首页 >其他 >Scala循环中断网站首页其他

Scala循环中断

夏殿灬青葛石 2023-06-05 08:00:02
简介Scala循环中断

在scala中无法直接使用break关键字跳出当前循环,但有其他方法

1.使用抛出和捕获异常的方法跳出当前循环

def main(args: Array[String]): Unit = {
    try {
      for (i <- 0 until 5) {
        if (i == 3)
          throw new RuntimeException
        println(i)
      }
    } catch {
      case e: Exception =>
    }
    println("这是循环外的代码")

2.使用Scala中的Breaks类的break方法

首先引入Breaks类,调用该类下的breakable方法(表示接下来的代码是可中断的),在需要中断的地方调用该类下的break方法即可跳出当前循环

import scala.util.control.Breaks

object Test_Break {
  def main(args: Array[String]): Unit = {
    try {
      for (i <- 0 until 5) {
        if (i == 3)
          throw new RuntimeException
        println(i)
      }
    } catch {
      case e: Exception =>
    }
    println("这是循环外的代码")

    //使用Scala中的Breaks类中的break方法
    Breaks.breakable(
      for (i <- 0 until 5) {
        if (i == 3) {
          Breaks.break()
        }
        println(i)
      }
    )

  }

}

这里解释下,Breaks类下的breakable方法其实就是将 try catch 进行了包装,而该类下的break方法其实就是抛出了一个 breakException (返回类型Nothing),也就是说这里同样是使用抛出异常的方法实现了跳出循环的这样一个功能

3.测试

可见都是当 i == 3 时中断了循环
在这里插入图片描述

4.简化 使用 ._ 来引入全部内容 方便调用

我们可以使用 import scala.util.control.Breaks._
(其实就是加上了 ._ 类似于Java中的 .* )引入Break类中的所有属性和方法
这样接下来调用其中的方法就不用再 . 了

package chapter02

import scala.util.control.Breaks._

object Test_Break {
  def main(args: Array[String]): Unit = {
    try {
      for (i <- 0 until 5) {
        if (i == 3)
          throw new RuntimeException
        println(i)
      }
    } catch {
      case e: Exception =>
    }
    println("这是循环外的代码")

    //使用Scala中的Breaks类中的break方法
    breakable(
      for (i <- 0 until 5) {
        if (i == 3) {
          break()
        }
        println(i)
      }
    )

  }

}
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。