scala学习之条件分支与循环控制

scala学习

条件分支

if-else语句

  • 基本语法同java

  • 在scala中,每一条语句都有其返回值,if-else语句也不例外,其返回值为满足条件的代码体中最后一句语句的返回值

  • 因此scala取消了三元运算符,因为其可以直接用if-else语句实现,实现方法如下:

    // java
    // a?1:2
    
    // scala
    if (a) 1 else 2
    

switch语句

  • scala中取消了switch语句,通过模式匹配来处理类似需求

循环控制

for循环

  • scala为for循环提供了很多的特性,这些for循环的特性被称为for推导试或者for表达式
范围数据循环的方法:
  • 方法1:

        for (i <- 1 to 3){
          println(i + "")
        }
    	/*
    	 输出结果如下:
    	 1
    	 2
    	 3
    	*/
    
  • 方法2:

        for (i <- 1 until 3){
          println( i + "" )
        }
    	/*
    	 输出结果如下:
    	 1
    	 2
    	*/
    
循环守卫
  • 循环守卫即循环保护式,又称为条件判断式、守卫。

    • 当保护式的值为true的时候进入循环体,否则跳过,类似continue
  • 基本语法:

        for (i <- 1 to 3 if i != 2) {
          println(i + "")
        }
    	/*
    	 输出结果如下:
    	 1
    	 3
    	*/
    
循环步长
  • 基本语法:

        for (i <- 1 to 10 by 2){
          println( i + "" )
        }
    	/*
    	 输出结果如下:
    	 1
    	 3
    	 5
    	 7
    	 9
    	*/
    

    所谓步长,即每次循环后i自增长的大小

嵌套循环
  • 基本语法:

        for (i <- 1 to 3; j <- 1 to 3){
          println(s"i=$i,j=$j")
        }
    	/*
    	 输出结果如下
    	 i=1,j=1
    	 i=1,j=2
    	 i=1,j=3
    	 i=2,j=1
    	 i=2,j=2
    	 i=2,j=3
    	 i=3,j=1
    	 i=3,j=2
    	 i=3,j=3
    	*/
    

    两个不同的循环范围间通过’;'来分隔。

引入变量
  • 基本语法:

        for (i <- 1 to 3; j = i*2){
          println(s"i=$i,j=$j")
        }
    	/*
    	 输出结果如下
    	 i=1,j=2
    	 i=2,j=4
    	 i=3,j=6
    	*/
    

    在for语句中有多个表达式的时候,通过’;'进行分隔

    在for推导式中,如果有多个表达式,一般一行一句表达式,并且通过花括号替换圆括号

    只有只存在一句表达式的时候使用圆括号。

    依照这个习惯,上面的案例可以写为:

        for {
          i <- 1 to 3
          j = i * 2
        } {
          println(s"i=$i,j=$j")
        }
    

    这种写法与上面的写法等价

循环的返回值
  • 基本用法:

        val result = for (i <- 1 to 3)yield i
        println(result)
    	/*
    	 输出结果如下:
    	 Vector(1, 2, 3)
    	*/
    

    可以看到,通过关键字yield将返回的值封装到了一个vector集合中

    同时,yield关键字后面可以是一个逻辑代码块,如:

        val result = for (i <- 1 to 3) yield {
          var j = "the string"
          j + i
        }
    	/*
    	 输出结果如下:
    	 Vector(the string1, the string2, the string3)
    	*/
    

while循环

  • 基本语法同java
  • 与if语句不同的是,while语句没有返回值,或者说,while语句的结果是Unit类型
  • 因此,当需要用该语句来计算并返回结果的时候,就不可避免地会使用变量,可是这样就会在循环内修改循环外地变量,违反了函数式编程地重要思想(输入–>函数–>输出,不对外界造成影响),故而比起weile语句,更推荐使用for语句。
do……while循环
  • 使用方法同java
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值