ReyMagos
Тег-бомбастер
- 412
- 7
- 121
Я не понимаю в чём смысл этого кода:
Если можно было не париться и сделать так:
Логично, что в
И тут самый главный вопрос. Зачем придумывать безопасный оператор вызова если можно просто всегда возвращать либо значение либо
Kotlin:
var a: String? = null
val b = a?.length;
Kotlin:
var a: String? = null;
val b = a.length; //Без знака вопроса
Логично, что в
String
null
физически не может лежать, чего не скажешь о String?
. b?
по сути является безопасным вызовом, который либо выдаст b.length
, либо null
. Соответственно если попробовать вызвать метод без него, то будет ошибка при компиляции.И тут самый главный вопрос. Зачем придумывать безопасный оператор вызова если можно просто всегда возвращать либо значение либо
null
? По сути код a.length
вернёт тип Int
, а a?.length
вернёт Int?
. Но не логичнее ли возвращать Int?
, если a
может быть нулевым и Int
, если не может? Просто обычный метод, у которого тип результата будет зависеть от типа у которого его вызывают? Или я что-то не понимаю, так нельзя делать?
Последнее редактирование: