Это потому, что в первом примере вы говорите, что b
имеет тип Int
, а во втором примере, поскольку вы не указали явный тип, компилятор устанавливает его в Int?
.
Это потому, что Int(string)
будет работать только в том случае, если строку можно интерпретировать как Int
, поэтому Int("3")->3
, но что делать, если вы скажете Int("text")->nil
, потому что она не может проанализировать строку в Int
Вы можете указать значение по умолчанию, если хотите в первом примере, и тогда все будет в порядке.
var b: Int = Int(a) ?? 0