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