基本如果表达

在 Scala 中(与 Java 和大多数其他语言相比),if 是一个表达式而不是语句。无论如何,语法是相同的:

if(x < 1984) {
   println("Good times")
} else if(x == 1984) {
   println("The Orwellian Future begins")
} else {
   println("Poor guy...")
}

if 作为表达式的含义是你可以将表达式的 evalation 结果赋值给变量:

val result = if(x > 0) "Greater than 0" else "Less than or equals 0"
\\ result: String = Greater than 0

上面我们看到 if 表达式被评估,result 被设置为结果值。

if 表达式的返回类型是所有逻辑分支的超类型。这意味着对于此示例,返回类型是 String。由于并非所有 if 表达式都返回一个值(例如 if 语句没有 else 分支逻辑),因此返回类型可能是 Any

val result = if(x > 0) "Greater than 0"
// result: Any = Greater than 0

如果没有值可以返回(例如,如果在逻辑分支中只使用像 println 这样的副作用),则返回类型将为 Unit

val result = if(x > 0) println("Greater than 0")
// result: Unit = ()

Scala 中的 if 表达式与 Java 函数中的三元运算符类似。由于这种相似性,Scala 中没有这样的运算符:它将是多余的。

如果内容是单行,则可以在 if 表达式中省略大括号。