4.流程控制

流程控制

分支控制

if (条件表达式){

    执行代码块
}

if (条件表达式){
    执行代码块
}else{
    执行代码块
}

分支语句的返回值

Scala中if else表达式其实是有返回值的,具体返回值取决于满足条件的代码体的最后一行内容。如果多个判断条件下返回值类型不一致,取它们共同的祖先类型

  var s : String =if (age <18) {
            "未成年"
        }else{
            "成年人"
        }
    print(s)

三元运算符号的实现

Scala可以使用if else实现Java中的三元运算符,其实质依旧是省略再省略

val res : String =  if (age<18) "童年" else "成年"

循环控制

Scala为for循环提供了非常多的特性,这些for循环的特性被称为for推导式或者for表达式

范围数据循环

 def main(args: Array[String]): Unit = {
            // range集合类=》范围的集合 1 to 3
            for (i: Int <- 1 to 3) {
                println(i)
            }

        println("--------")
            // 如果能推断出数据的类型,那么变量的类型可以省略,类似于java中的增强for循环
            for (i <- 1 to 3) {
                println(i)
            }
        println("--------")
            // 1 until 3 表示1,2
            for (i <- 1 until (3)) {
                println(i)
            }
        println("--------")
            // 循环步长
            for (i <- 1 to 10 by 2){
                println(i)
            }
        println("--------")
            // 只会打印1,3
            val list = new Range(1,5,2)
            for (i <- list){
                println(i)
            }

        println("--------")

            // 循环守卫

            for (i <- 1 to 3 if i !=2){
                println(i)
            }
        println("--------")
            // 反转输出
            for (i <- list reverse){
                println(i)
            }
        }
        println("--------")

while 和 do...while

while (循环条件){
    循环体
}
  • while语句没有返回值,或者说只有unit类型的返回值
  • while是先判断再执行
  • 由于while,没有返回值,所以需要利用该语句来计算并返回结果时,不可避免的使用了变量,而变量需要声明再while循环的外部,那么等同于循环的内部对外部造成了影响,这违背了函数式编程的重要思想**(输入=>函数=>输出,不对外界造成影响)**所以推荐使用for循环。
do {
    循环体
}while (循环条件)

循环的中断

scala中没有break和continue,所以为了更好的适应函数式编程,推荐使用breakable控制结构来实现break和continue功能

 // break的实现
        println("--------")
        Breaks.breakable{
            for (i <- 1 to 10){
                println(i)
                if (i==3){
                    Breaks.break()
                }
            }
        }

        // continue的实现,使用if就可以实现了
        for (i <- 1 to 10){

            if (i!=3){
                println(i)
            }else{

            }
        }
发布了118 篇原创文章 · 获赞 5 · 访问量 7184

猜你喜欢

转载自blog.csdn.net/resilienter/article/details/103733934