基本如果表达
在 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
表达式中省略大括号。