Kotlin基礎六之再談’if’ ‘when’
博主之前的文章提到過if
是個具有返回值的表達式而不是一個statement。所以,在kotlin中,函數還可以這麼寫:
fun eval(e: Any): Int =
if (e is Int) {
e.toInt()
} else {
throw IllegalArgumentException("Unknown type.")
}
fun main(args: Array<String>) {
println(eval(100))
println(eval("200"))
}
//result:
> 100
> Exception in thread "main" java.lang.IllegalArgumentException: Unknown type.
看出來什麼了嗎?函數沒有return
語句也能返回值,原因就是因爲if
是個帶有值的表達式。
我們說when
可以替代if-else-if
鏈,因此,這麼做也是可以的:
fun eval(e: Any): Int =
when(e) {
is Int -> e.toInt()
else -> throw IllegalArgumentException("Unknown type.")
}
在kotlin中已經沒有了三目運算符,而是用if (a > b) a else b
來替代了。