给定这些值
let lists: [[Double]] = [[1.1, 2.2, 3.3], [4.4, 5.5, 6.6]]
让我们看一下几种可能的方法
let sum = lists.reduce(0) { $0 + $1.reduce(1, combine: *) }
如果您定义此扩展名
extension SequenceType where Generator.Element == Double {
var product : Double { return reduce(1.0, combine: *) }
}
然后你可以写
let sum = lists.reduce(0) { $0 + $1.product }
使用上面定义的扩展名,您还可以编写
let sum = lists.map { $0.product }.reduce(0, combine:+)
如果我们定义这两个后缀运算符
postfix operator +>{}
postfix func +>(values:[Double]) -> Double {
return values.reduce(0, combine: +)
}
postfix operator *>{}
postfix func *>(values:[Double]) -> Double {
return values.reduce(1, combine: *)
}
我们可以写
lists.map(*>)+>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句