1、条件表达式
Scala的if/else语法结构和java和C++一样,但是在Scala中if/else表达式有值,这个值就是跟在if或else之后的表达式的值。
举个栗子:
if (x > 0) 1 else -1
也可以将if/else的值赋给变量:
val s = if (x > 0) 1 else -1
在Scala中,每个表达式都有一个类型。
举个栗子:
if (x > 0) 1 else -1 的值得类型为 Int,因为两个分支的类型都是Int
混合类型的表达式:
if(x > 0) "positive" else -1
该表达式的类型是两个分支类型的公共超类型 Any (一个分支是 java.lang.String,另一个分支是Int)
如果else部分缺失,例如
if (x > 0) 1
则有可能 if 没有输出值。但是在Scala中,每个表达式都应该有某种值。为了解决这个问题,Scala引入了 Unit 类,写作 ()。
所以,不带else的if语句等同于
if (x > 0 ) else ()
可以把()当做表示 “无有用值”的占位符,将Unit当做Java或者C++的void
** 当一行语句没有写完需要换行时,需要使用花括号(尤其在REPL中)
例如:
if (x > 0) { 1
} else if(x == 0) 0 else -1
** 在REPL中,可以使用粘贴模式,书写成块的代码
:paste