Почему дополнительные функции в Kotlin требуют явной инициализации? - PullRequest
0 голосов
/ 15 мая 2018

При определении необязательного свойства в классе Kotlin требует, чтобы оно явно инициализировалось как нулевое, например, так:

var myString: String? = null

Есть ли какая-либо причина, по которой компилятор не может вывести это начальное значение?Я полагаю, что Swift позволит вам пропустить часть = null, однако это ошибка компилятора в Kotlin.Не проще ли автоматически получить значение null после написания следующего?

var myString: String?

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Ясность является частью общего языкового дизайна в Kotlin.Не существует неявных значений по умолчанию для любых типов в языке Kotlin.Существует также желание препятствовать (неправильному) использованию пустых значений, поэтому в отношении инициализации нулевые значения ни в коем случае не считаются специальными.Если у вас есть необнуляемая строка var myString: String, вам необходимо инициализировать ее чем-то так же, как вы должны инициализировать обнуляемую строку var myString: String? чем-то, поэтому ее начальное значение всегда является явным.

Обратите внимание, технически говоря, String? в Kotlin не является необязательной строкой в ​​Kotlin.В Kotlin это называется nullable строка.Тем не менее, наиболее распространенным вариантом использования нулей является представление «отсутствия значения».

0 голосов
/ 15 мая 2018

Нет причины null должно быть начальным значением неинициализированных переменных.

Это не логический вывод .

Это просто правило в Swift, и у Котлина такого правила нет.

Как вы думаете, var a: Int? следует инициализировать как? 0 или null? Оба аргумента могут иметь некоторые причины.

А в Котлине обнуляемые не являются необязательными .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...