在Swift中查找数字的数字总和

bma*_*iel 2 swift

有谁知道如何获得Swift中数字中所有数字的总和?

例如,使用该数字845将导致17

Leo*_*bus 12

更新:Swift 4或更高版本

let string = "845"
let sum = string.compactMap{$0.wholeNumberValue}.reduce(0, +)
print(sum) // 17

let integer = 845
let sumInt = String(integer).compactMap{$0.wholeNumberValue}.reduce(0, +)
print(sumInt) // 17
Run Code Online (Sandbox Code Playgroud)

  • 好的。极其迅捷!它让我查找数组、映射和减少并在操场上使用它。我现在明白了。值得学习。有一天,你在这里的例子会节省我一些时间! (2认同)

Mar*_*n R 9

这是一个仅使用简单整数运算的解决方案:

func digitSum(var n : Int) -> Int {
    var sum = 0
    while n > 0 {
        sum += n % 10 // Add least significant digit ...
        n /= 10   // ... and remove it from the number. 
    }
    return sum
}

println(digitSum(845)) // 17
Run Code Online (Sandbox Code Playgroud)

Swift 3/4更新:

func digitSum(_ n : Int) -> Int {
    var n = n
    var sum = 0
    while n > 0 {
        sum += n % 10 // Add least significant digit ...
        n /= 10   // ... and remove it from the number.
    }
    return sum
}

print(digitSum(845)) // 17
Run Code Online (Sandbox Code Playgroud)

另一个实现,只是为了好玩:

func digitSum(_ n : Int) -> Int {
    return sequence(state: n) { (n: inout Int) -> Int? in
            defer { n /= 10 }
            return n > 0 ? n % 10 : nil
        }.reduce(0, +)
}
Run Code Online (Sandbox Code Playgroud)