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'
沒有留言:
張貼留言