Scala中的分支和循环

分支
Scala 通过if else 语法实现程序分支示例如下:

object IfElseDemo01 {
  def main(args: Array[String]): Unit = {
    testif
  }
  def testif(): Unit ={
    var age =StdIn.readInt();//从控制台读取一个年龄值
    if(age>18){
    println("已成年")
    }else{
      println("未成年")
    }
  }
}

ifelse注意事项
1)如果大括号的逻辑只有一行 则大括号可以省略
2)Scala中没有三目运算符 ,使用ifelse 来代替

var res = if(1==1)"12" else "22"

3)Scala中任意表达式都是有返回值的,if else 表达式也是有返回结果的,具体返回结果取决于最后一行代码的执行内容

object IfElseDemo01 {
  def main(args: Array[String]): Unit = {
    println("结果:"+testif)//如果输入
  }
  def testif(): Any ={
    var age =StdIn.readInt();
    return if(age>18){
    println("已成年")
      "12"
    }else{
      println("未成年")
      13
    }
  }
}

输出结果
22
已成年
结果:12

Scala中没有switch而是使用模式匹配来处理

for循环
Scala 中的for循环比java 强大 支持 额外操作,比如 循环守卫、定义变量、返回结果等具体示例如下

//基本for 循环语法 to 表示 [1-3]
  def testFor(): Unit ={
    for(i<-1 to 3 ){
      println(i)
    }
  }

  //基本for 循环语法 until表示[1,3)
  def testFor2(): Unit ={
    for(i<-1 until 3 ){
      println(i)
    }
  }

  //循环守卫
  def testFor3(): Unit ={
    // 只有在i !=2 的时候才输出
    for(i <-1 to 3 if i!=2 ){
      println(i)
    }

    // 等同于如下代码
    for(i <-1 to 3 ){
      if(i!=2)
        println(i)
    }


    // 引入变量
    for(i <-1 to 3;j=i*4 ){
        println(i)
    }

    // 上述代码等同于
    for(i <-1 to 3){
      var j=i*4
      println(i)
    }


    // 循环返回值
    //将便利过程中处理结果返回到一个新的 Vector集合中,使用yield关键字
    //yield 可以跟一个代码块 {}
    var res = for(i <-1 to 3) yield i*5
      println("新集合:"+res)//新集合:Vector(5, 10, 15)

    //for循环可以使用花括号代替小括号
    for{
      i<-1 to 3
      j=i*2}{

    }

    //for 循环步长控制  从1到10 步长为2
    //步长也可以通过循环守卫类实现  i%2
    for(i<- Range(1,10,2)){
      println("步长控制:"+i)

    }
  }

while 和 do while 循环

语法示例如下

/**
   * 因为while中没有返回值,所以当需要用该语句返回结果时,必须使用循环外的变量
   * 来保存结果,就是说循环体 对 外部变量产生了影响,不推荐使用,推荐使用 for
   */
  def testWhile1={
     var i =0
    while(i<10){
      println("while 循环"+i)
      i+=1
    }
  }

  /**
   * do while  先执行逻辑再进行逻辑条件判断
   */
  def testWhile2={
    var i =0
    do{
      println("while 循环"+i)
      i+=1
    }while(i<10)
  }

Scala中的 continue 和break
为了更好的适应函数化编程 Scala 中没有 break 和 continue 只能使用函数式风格来实现类似的功能,示例如下:

  /**
   * 循环中的 break 和 continue
   * 为了更好的适应函数化编程 Scala 中没有 break 和 continue
   * 只能使用函数式风格来实现类似的工鞥,
   * break 实现
   * 1、导入 import util.control.Breaks._
   * 2、循环外使用 breakable   实际上就是利用异常来实现
   * breakable 中会通过try catch补捕获
   *break 方法 抛出的异常
   *
   * 3、循环内 使用 break()抛出异常
   *
   * continue 可以通过循环体内 if else 嵌套实现或者使用循环守卫
   */

  def testBreak= {
    var i=0;
    breakable{//会捕获 break 抛出的异常
      while(true){
        i+=1
        println("异常测试"+i)
        if(i==2){
          break()//会抛出异常
        }
      }
    }
  }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

catch that elf

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

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

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

打赏作者

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

抵扣说明:

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

余额充值