【发布时间】:2015-09-03 03:48:59
【问题描述】:
【问题讨论】:
-
电池添加代码。不是图片。
标签: arrays swift parse-platform
【问题讨论】:
标签: arrays swift parse-platform
更新:Xcode 10.1 • Swift 4.2.1 或更高版本
let strings = ["1.9","2.7","3.1","4.5","5.0"]
let doubles = strings.compactMap(Double.init)
let sum = doubles.reduce(0, +)
print(sum) // 17.2
如果不需要中介收款
let sum = strings.reduce(0) { $0 + (Double($1) ?? .zero) }
【讨论】:
只需map(迭代并转换数组中的每个值)数组中的所有值都为Double,然后reduce所有Double值,起始值为0和闭包(在您的情况下,它只是一个运算符)+.
reduce通过递归应用提供的闭包,将元素集合缩小为单个值。
let stringDoubles = ["2.9","3.1","1.7","9.5","5.6"]
let sum = stringDoubles.map { Double($0)! }.reduce(0, combine: +)
print(sum) // "22.8". If start value was, for example, 10, print(sum) => "32.8"
【讨论】:
遍历数组, 对于每个字符串,使用以下命令将字符串转换为双精度:
Double(string:String)
然后将每个添加到计数中
var strings:[String] = ["1.3", "1", "8", "5", "bad number"]
var tally = 0.0
for eachString in strings{
// Convert each string to Double
if let num = Double(eachString) { //Double(String) returns an optional.
tally += num
} else {
print("Error converting to Double")
}
// Another way to convert if you don't need error handling
// NSString.doubleValue will just return 0.0 on a bad string.
// let num=(eachString as NSString).doubleValue
// tally += num
}
print(tally)
【讨论】:
这是您在 Swift 2.0 中问题的第一部分的答案:
我有一个字符串数组,我想将其转换为 Double。然后我想将数组中的每个项目加在一起并得到总和。
let myStrings = ["2", "3","5.6", "4", "6"]
let doubles = myStrings.map { (s : String) -> Double in
if let d = Double(s){
return d
}
return 0.0
}
let sum = doubles.reduce(0.0, combine: {(sum: Double, item:Double) ->Double in
return sum + item
})
【讨论】: