1. 程式人生 > >Kotlin的基礎知識

Kotlin的基礎知識

當某個變數的值可以為 null 的時候,必須在宣告處的型別後新增 ? 來標識該引用可為空。

如果 str 的內容不是數字返回 null

fun parseInt(str: String): Int? {
    // ……
}

is 運算子檢測一個表示式是否某型別的一個例項。 如果一個不可變的區域性變數或屬性已經判斷出為某型別,那麼檢測後的分支中可以直接當作該型別使用,無需顯式轉換:

fun getStringLength(obj: Any): Int? {
    if (obj is String) {
        // `obj` 在該條件分支內自動轉換成 `String`
return obj.length } // 在離開型別檢測分支後,`obj` 仍然是 `Any` 型別 return null } 或者 fun getStringLength(obj: Any): Int? { if (obj !is String) return null // `obj` 在這一分支自動轉換為 `String` return obj.length } 或者 fun getStringLength(obj: Any): Int? { // `obj` 在 `&&` 右邊自動轉換成 `String` 型別
if (obj is String && obj.length > 0) { return obj.length } return null }

使用for 迴圈

val items = listOf("apple", "banana", "kiwifruit")
for (item in items) {
    println(item)
}

while  迴圈

val items = listOf("apple", "banana", "kiwifruit")
var index = 0
while
(index < items.size) { println("item at $index is ${items[index]}") index++ }

when 使用

fun describe(obj: Any): String =
    when (obj) {
        1          -> "One"
        "Hello"    -> "Greeting"
        is Long    -> "Long"
        !is String -> "Not a string"
        else       -> "Unknown"
    }

使用 in 運算子來檢測某個數字是否在指定區間內:

val x = 10
val y = 9
if (x in 1..y+1) {
    println("fits in range")
}