2019年5月21日 星期二

Kotlin學習筆記(16) 使用空值及null檢測

Kotlin學習筆記(16) 使用空值及null檢測

fun parseInt(str: String): Int? {
    return str.toIntOrNull()
}
/*
某個變量的值可以為null的時候,必須在聲明處的類型後添加?來標識該引用可為空。
如果str的內容不是數字返回null:
fun  parseInt ( str : String ): Int ? {
    // ……
}
*/

fun printProduct(arg1: String, arg2: String) {
    val x = parseInt(arg1)
    val y = parseInt(arg2)

    // 直接使用 `x * y` 会导致编译错误,因为他们可能为 null
    if (x != null && y != null) {
        // 在空检测后,x 与 y 会自动转换为非空值(non-nullable)
        println(x * y)
    }
    else {
        println("either '$arg1' or '$arg2' is not a number")
    }   
}


fun parseInt2(str: String): Int? {
    return str.toIntOrNull()
}

fun printProduct2(arg1: String, arg2: String) {
    val x = parseInt(arg1)
    val y = parseInt(arg2)
   
    // ……
    if (x == null) {
        println("Wrong number format in arg1: '$arg1'")
        return
    }
    if (y == null) {
        println("Wrong number format in arg2: '$arg2'")
        return
    }

    // 在空检测后,x 与 y 会自动转换为非空值
    println(x * y)
}



fun main() {
    printProduct("6", "7")
    printProduct("a", "7")
    printProduct("a", "b")
   
    printProduct2("6", "7")
    printProduct2("a", "7")
    printProduct2("99", "b")
   
}

輸出畫面
42 either 'a' or '7' is not a number either 'a' or 'b' is not a number 42 Wrong number format in arg1: 'a' Wrong number format in arg2: 'b'



沒有留言:

張貼留言

2024_09 作業3 以Node-Red 為主

 2024_09 作業3  (以Node-Red 為主  Arduino 可能需要配合修改 ) Arduino 可能需要修改的部分 1)mqtt broker  2) 主題Topic (發行 接收) 3) WIFI ssid , password const char br...