【Scala流程控制】08、选择结构

在这里插入图片描述

一、if/else语句

在Scala中,流程控制语句if/else用于根据条件执行不同的代码块。它与其他编程语言中的if/else语句类似,根据给定的条件来决定执行哪个代码块。if/else语句的基本语法如下:

if (condition) {
    
    
  // 如果条件为真,则执行这里的代码块
} else {
    
    
  // 如果条件为假,则执行这里的代码块
}

其中:

  • condition是一个布尔表达式,当其结果为true时,执行if代码块,否则执行else代码块(如果存在)。
  • if后面的条件可以是任意返回布尔值的表达式,例如比较、逻辑运算、函数调用等。

示例:

val x = 10

if (x > 5) {
    
    
  println("x is greater than 5")
} else {
    
    
  println("x is less than or equal to 5")
}

在上述示例中,根据变量x的值,如果x大于5,则执行if代码块输出"x is greater than 5",否则执行else代码块输出"x is less than or equal to 5"。

二、多分支

在Scala中,if/else语句也可以实现多分支:

val score = 75

if (score >= 90) {
    
    
  println("Excellent")
} else if (score >= 80) {
    
    
  println("Good")
} else if (score >= 70) {
    
    
  println("Average")
} else {
    
    
  println("Fail")
}

在上述示例中,根据分数score的不同值,分别输出不同的评级。

三、if/else表达式

需要注意的是,在Scala中,if/else是一个表达式,可以返回一个值。因此,如果if代码块和else代码块返回的是不同类型的值,那么整个if/else表达式的结果类型将被推断为它们共同的父类型。这种特性使得if/else语句在函数式编程中非常有用。

val score = 80
val result = if (score >= 60) "及格" else "不及格" // 作为表达式,值赋给变量result

在Scala中,if/else语句是一个表达式(Expression),它可以返回一个值。因此,您可以将if/else的结果赋值给变量。变量的类型会根据条件块的返回值类型进行推断,或者您可以显式指定变量的类型。

以下是将if/else的结果赋值给变量的示例:

val x = 10
val result = if (x > 5) {
    
    
  "x is greater than 5"
} else {
    
    
  "x is less than or equal to 5"
}

println(result) // 输出:"x is greater than 5"

在上述示例中,根据变量x的值,if/else表达式会返回不同的结果,并将其赋值给变量result。根据x的值,result变量将保存不同的字符串。

如果if/else中的两个代码块返回的类型不一致,Scala会根据它们的共同父类型来推断变量的类型。例如:

val y = 10
val result: Any = if (y > 5) {
    
    
  "x is greater than 5"
} else {
    
    
  42
}

println(result) // 输出:"x is greater than 5"

在上述示例中,if代码块返回的是String类型的值,而else代码块返回的是Int类型的值,但是由于Any是它们的共同父类型,因此变量result的类型被推断为Any

请注意,尽管可以将if/else的结果赋值给变量,但是在函数式编程中,推荐尽可能地使用不可变变量(val)和不可变数据结构来提高代码的安全性和可维护性。

猜你喜欢

转载自blog.csdn.net/m0_47256162/article/details/132158708