Kotlin-空安全

Kotlin-Null Safety

嗯...问题是 --> “编写程序使用 'Elvis' 运算符和 '!!' 检查变量 x 和 y 的空值operator.需要完成函数nullable.如果不为null应该return字符串的长度,否则-1"

fun nullable(nullableString: String?): Int {
   

}
fun main(args: Array<String>) {
   val str = readLine()!!
    var result = -100
    if(str=="null") {
        result = nullable(null)
    }else
        result = nullable(str)
    println(result)
}
fun nullable(nullableString: String?): Int {
  return nullableString?.length ?: -1
}

基本上只是 return 输入长度使用 Elvis operator-1 如果输入是 null.

fun nullable(nullableString: String?): Int = nullableString?.length ?: -1
fun nullable(nullableString: String?, default: Int): Int {
    return nullableString?.toIntOrNull() ?: default
}

fun main(args: Array<String>) {
    val str = readlnOrNull()
    val result = -1
    println(nullable(str, result))
}

此处 'str' 变量接受值,而默认值为 -1 它 returns 默认为 -1 或 int 值,这是 Elvis 运算符 但你想要长度而不是值 所以这是解决方案

fun nullable(nullableString: String?, default: Int): Int {
    return if (nullableString?.length == 0) {
        default
    } else { 
        nullableString?.length!! // !! is called the 'not-null assertion operator'
    }
}

fun main(args: Array<String>) {
    val str = readlnOrNull()
    val result = -1
    println(nullable(str, result))
}