正在玩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。它只是默认为第二个字符吗?
答案 0 :(得分:4)
“0”+“1”==“01”。你正在连接而不是添加。转换为int时会丢失0,因为它是前导零。
领先的零通常被视为毫无意义,但在某些情况下,它们实际上表示您正在表达基于八进制的数字。即使在这种情况下,它仍然最终会评估为1。