scala for循环 (循环守卫、 循环步长、循环嵌套 、引入变量、循环返回值、循环中断 Breaks)


1. 基本语法

  语法:

for ( 循环变量 <- 数据集 ) {
    循环体
}
object ScalaLoop {
    def main(args: Array[String]): Unit = {
        for ( i <- Range(1,5) ) { // 范围集合
            println("i = " + i )
        }
        for ( i <- 1 to 5 ) { // 包含5
            println("i = " + i )
        }
        for ( i <- 1 until 5 ) { // 不包含5
            println("i = " + i )
        }
    }
}

注:字符串循环

        for(i <- "hello"){
          println(i)
        }

在这里插入图片描述
实际处理逻辑:
在这里插入图片描述


2. 循环守卫

  循环时可以增加条件来决定是否继续循环体的执行(建议第二种方式)

object ScalaLoop {
    def main(args: Array[String]): Unit = {
        for ( i <- Range(1,5) if i != 3  ) {
            println("i = " + i )
        }

    for (i <- Range(1, 5)) {
      if (i < 3) {
        println(i)
      }
    }

    }
}

3. 循环步长

  scala的集合可设定循环的增长幅度

object ScalaLoop {
    def main(args: Array[String]): Unit = {
        for ( i <- Range(1,5,2) ) {
            println("i = " + i )
        }
        for ( i <- 1 to 5 by 2 ) {
            println("i = " + i )
        }
    }
}

4. 循环嵌套

  提供2种循环嵌套的方式(建议第二种方式)

object ScalaLoop {
    def main(args: Array[String]): Unit = {
        for ( i <- Range(1,5); j <- Range(1,4) ) {
            println("i = " + i + ",j = " + j )
        }
        
        for ( i <- Range(1,5) ) {
            for ( j <- Range(1,4) ) {
                println("i = " + i + ",j = " + j )
            }
        }
    }
}

5. 引入变量

object ScalaLoop {
    def main(args: Array[String]): Unit = {
        for ( i <- Range(1,5); j = i - 1 ) {
            println("j = " + j )
        }
    }
}

6. 循环返回值

  scala所有的表达式都是有返回值的,但是返回值并不一定都是有值的,for循环返回值为Unit

在这里插入图片描述
在这里插入图片描述

  若需要将for循环的结果作为返回值使用,需要采用yield关键字,yield关键字会把每次循环结果放置在一个新的结果中

object ScalaLoop {
    def main(args: Array[String]): Unit = {
        val result = for ( i <- Range(1,5) ) yield {
            i * 2
        }
        println(result)
    }
}

在这里插入图片描述

注:
  Java中的线程yield方法,Scala调用

    Thread.`yield`

7. 循环中断

  scala是完全面向对象的语言,所以无法使用break,continue关键字进行循环中断或继续循环逻辑,而是采用了函数式编程的方式代替了循环语法中的break
在这里插入图片描述

  Scala在循环中断时,会抛出异常改变代码逻辑;因此在使用break时,不能独立使用,需要结合breakable方法

import scala.util.control.Breaks


object T4 {
  def main(args: Array[String]): Unit = {
    Breaks.breakable(for (i <- 1 to 5) {
      if (i == 3) {
        Breaks.break()
      }
      println(i)
    })

    println("main执行")
  }
}

在这里插入图片描述
优化:使用import scala.util.control.Breaks._

import scala.util.control.Breaks._


object T4 {
  def main(args: Array[String]): Unit = {
    breakable(for (i <- 1 to 5) {
      if (i == 3) {
        break
      }
      println(i)
    })

    println("main执行")
  }
}

  对于continue进行继续循环则仅需要通过if else条件判断处理

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

但行益事莫问前程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值