Преобразование типов необходимо развернуть? - PullRequest
0 голосов
/ 03 сентября 2018
var a: String = "1"
var b: Int = Int(a) 

В приведенном выше примере выдается ошибка о том, что Int необходимо развернуть.

var a: String = "1"
var b = Int(a)

Однако если мы отклоним тип при объявлении b и сделаем то же самое, это не вызовет никакой ошибки.

В чем разница между двумя подходами? Почему первый должен быть развернут, даже если он не объявлен необязательным?

1 Ответ

0 голосов
/ 03 сентября 2018

Это потому, что в первом примере вы говорите, что b имеет тип Int, а во втором примере, поскольку вы не указали явный тип, компилятор устанавливает его в Int?.

Это потому, что Int(string) будет работать только в том случае, если строку можно интерпретировать как Int, поэтому Int("3")->3, но что делать, если вы скажете Int("text")->nil, потому что она не может проанализировать строку в Int

Вы можете указать значение по умолчанию, если хотите в первом примере, и тогда все будет в порядке.

var b: Int = Int(a) ?? 0

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