基本如果表達

在 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 表示式中省略大括號。