Почему ("0"+"1"). ToInt()! вернуть 1 как Int, а не 0
Играл с функцией уменьшения на коллекциях в Swift.
//Reduce method should return an Int with the value 3141.
let digits = ["3", "1", "4", "1"]
.reduce(0) {
(total:Int, digit:String) in
return ("\(total)" + digit).toInt()!
}
Функция дает правильный вывод, но почему ("0"+"1").toInt()!
вернуть 1 как Int, а не 0? Строка, объединенная для превращения в Int, "01"
, Я предполагаю, что это строка, которую функция не может напрямую преобразовать в Int. Это просто по умолчанию для второго символа вместо этого?
1 ответ
Решение
"0"+"1" == "01". Вы делаете объединение, а не сложение. Вы теряете 0 при конвертации в int, потому что это ведущий ноль.
Ведущие нули обычно отбрасываются как бессмысленные, но в некоторых контекстах они фактически сигнализируют о том, что вы выражаете восьмеричное число. Даже если бы это имело место здесь, это все равно закончилось бы с оценкой 1.