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
来替代了。