为什么(“0”+“1”)。toInt()!将1作为Int返回,而不是0

时间:2014-10-13 06:04:17

标签: swift swift-playground swift-array

正在玩Swift中的集合的reduce函数。

//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"。我假设这是一个String,函数不能直接转换为Int。它只是默认为第二个字符吗?

1 个答案:

答案 0 :(得分:4)

“0”+“1”==“01”。你正在连接而不是添加。转换为int时会丢失0,因为它是前导零。

领先的零通常被视为毫无意义,但在某些情况下,它们实际上表示您正在表达基于八进制的数字。即使在这种情况下,它仍然最终会评估为1。