-2

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

4

1 回答 1

4

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

前导零通常被认为没有意义,但在某些情况下,它们实际上表明您正在表达一个基于八进制的数字。即使是这种情况,它最终仍会评估为 1。

于 2014-10-13T06:07:08.357 回答