17_循环中断_break&continue

循环中断 break、continue
* 说明
* 1. scala 去掉了break、continue
* break替代方案
* 1. 抛出异常
* 2. 调用break() 引入 scala.util.control.Breaks
* continue替代方案
* 1. 使用if语句
*
* try catch 自己处理异常
* 语法
* try {
* 可能出现异常的代码
* } catch(异常类名A e){
* 如果出现了异常类A类型的异常,那么执行该代码
* } ...(catch可以有多个)
* finally {
* 最终肯定必须要执行的代码(例如释放资源的代码)
* }
* 代码执行的顺序
* 1.try内的代码从出现异常的那一行开始,中断执行
* 2.执行对应的catch块内的代码
* 3.继续执行try catch结构之后的代码
*
* */
代码示例
复制代码
import scala.util.control.Breaks
import scala.util.control.Breaks.{break, breakable}

/**
  * @author gaocun
  * @create 2021-10-17 5:54 PM */
object 循环中断_05 {
  /* 循环中断 break、continue
  *  说明
  *     1. scala 去掉了break、continue
  *     break替代方案
  *         1. 抛出异常
  *         2. 调用break() 引入 scala.util.control.Breaks
  *     continue替代方案
  *         1. 使用if语句
  *
  *  try catch 自己处理异常
  *  语法
  *     try {
  *       可能出现异常的代码
  *     } catch(异常类名A e){
  *       如果出现了异常类A类型的异常,那么执行该代码
  *     } ...(catch可以有多个)
  *     finally {
  *       最终肯定必须要执行的代码(例如释放资源的代码)
  *     }
  *   代码执行的顺序
  *     1.try内的代码从出现异常的那一行开始,中断执行
  *     2.执行对应的catch块内的代码
  *     3.继续执行try catch结构之后的代码
  *
  *
  * */
  def main(args: Array[String]): Unit = {
    // 1. 抛出异常 替代break
    try {
      for (i <- 1 to 10) {
        printf("break-%d\n", i)
        if (i == 5) {
          //break
          print("执行break\n")
          throw new RuntimeException
        }

      }
    } catch {
      case e =>
    }
    println("正常结束循环")

    // 2. 采用scala自带函数,退出循环
    Breaks.breakable(
      for (i <- 1 to 10) {
        printf("break1-%d\n", i)
        if (i == 5) {
          //break
          print("执行break1\n")
          Breaks.break()
        }
      }
    )
    println("正常结束循环")

    // 3. 省略break
    breakable {
      for (i <- 1 to 10) {
        printf("break2-%d\n", i)
        if (i == 5) {
          //break
          print("执行break2\n")
          break
        }
      }
    }
    println("正常结束循环")

    println("====if 替代continue=============")
    for (i <- 1 to 10) {
      if (i % 2 == 0) {
        println("执行continue")
        println(i)
      }
    }


  }
}
复制代码

 

 
posted @   学而不思则罔!  阅读(94)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界
点击右上角即可分享
微信分享提示