Многие Kotlin учебники, которые я смотрел / читал, имеют следующую строку кода:
var number = Integer.valueOf(readLine())
И хотя раньше это явно работало, теперь он выдает ошибку компилятора при использовании Android studio и Kotlin версия 1.3.50
. Это указывает на несоответствие типов, когда найденное значение равно String?
, а требуемое значение равно String
.
Конечно, я понимаю , почему это происходит, я получаю, что пользователь может передавать через консоль нулевые или пустые значения, и поэтому ему необходимо иметь необязательное объявление нулевого значения, но я бы нравится понимать, как исправить ошибку компилятора и сохранить подобный код, не меняя слишком много.
Хотя я могу использовать обе эти строки кода:
var number = Integer.valueOf(readLine()!!)
и
var number = Integer.valueOf(readLine() as String)
Я считаю, что они могут выдавать различные исключения, как указано здесь
Я знаю, что могу решить эту проблему с помощью этого кода:
var number : String? = readLine();
if(number == null){
number = "0"
}
val number2 = Integer.valueOf(number);
Но это кажется ужасно неэффективным. Есть ли более короткий способ сделать это, используя собственный код Kotlin?