Почему я не могу объявить переменную и не назначить ей значение в swift для последующего использования? - PullRequest
0 голосов
/ 04 апреля 2020

Хорошо, я понимаю концепцию опций, значение nil и то, как swift хочет защитить ваш код от errors

Swift отлично подходит для вывода variables. Но почему компилятор swift не принимает только объявленную переменную.

То есть, почему бы

let unInitializedVariable: Int

выдать ошибку или не допустить ее, если я скажу

let unInitializedVariable: Int? = nil

, тогда компилятор счастлив. Было бы бессмысленно, если бы, скажем, компилятор сделал вывод, что первое утверждение совпадает с последующим выражением? Может кто-нибудь, пожалуйста, объясните.

1 Ответ

0 голосов
/ 04 апреля 2020

Дело не в том, что компилятор не может это сделать. Не хочет. Безопасность типов означает, что вы получите нужный тип.

Int? и Int очень разные. Int означает, что у вас есть значение, Int? означает, что вы можете иметь или не иметь значение.

С JSONDecoder, если у вас есть структура с Int внутри, вы получите ошибку, если ее ключ и значение отсутствуют. Если это Int? ему все равно, есть он или нет. Int и Int? выглядят одинаково, но они работают совсем по-другому.

...