Почему ("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.

Другие вопросы по тегам