Kotlin基礎六之再談'if' 'when'

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章