【发布时间】:2020-01-07 07:23:56
【问题描述】:
我看过/阅读的许多 Kotlin 教程都有这行代码:
var number = Integer.valueOf(readLine())
虽然它以前明显有效,但现在在使用 Android Studio 和 Kotlin 版本 1.3.50 时会引发编译器错误。
它表示类型不匹配,其中找到的是String?,需要的是String。
当然,我理解为什么会发生这种情况,我知道用户可以通过控制台传递 null 或空值,因此它需要有可选的 null 声明,但我想了解如何修复编译器错误并保留类似的代码而不进行太多更改。
虽然我可以使用这两行代码:
var number = Integer.valueOf(readLine()!!)
和
var number = Integer.valueOf(readLine() as String)
我相信这些可以抛出不同的异常,如here所述
我知道我可以使用以下代码“修复”这个问题:
var number : String? = readLine();
if(number == null){
number = "0"
}
val number2 = Integer.valueOf(number);
但它似乎非常低效。使用本机 Kotlin 代码是否有更短的方法来执行此操作?
【问题讨论】:
-
使用 Elvis 运算符指定结果为空时的默认值。
readLine()?: “0”.
标签: android-studio kotlin type-mismatch