在Swift中使用嵌套的reduce

iOS极客

我有一个数组,其中包含的数组Double,如屏幕截图所示:

在此处输入图片说明

我的目标是获得Double每个数组元素的乘积之和这意味着,我想乘以每个数组的所有元素,在我的情况下,我将有3个值,以便得到它们的总和。

我想用reduceflatMap或任何优雅的解决方案。

我尝试了什么?

totalCombinations.reduce(0.0) { $0 + ($1[0]*$1[1]*$1[2])  }

但这仅在我知道包含双打的数组的大小时才有效。

卢卡·安格莱蒂(Luca Angeletti)

给定这些值

let lists: [[Double]] = [[1.1, 2.2, 3.3], [4.4, 5.5, 6.6]]

让我们看一下几种可能的方法

解决方案#1

let sum =  lists.reduce(0) { $0 + $1.reduce(1, combine: *) }

解决方案#2

如果您定义此扩展名

extension SequenceType where Generator.Element == Double {
    var product : Double { return reduce(1.0, combine: *) }
}

然后你可以写

let sum = lists.reduce(0) { $0 + $1.product }

解决方案#3

使用上面定义的扩展名,您还可以编写

let sum = lists.map { $0.product }.reduce(0, combine:+)

解决方案#4

如果我们定义这两个后缀运算符

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Swift中使用Decodable解析嵌套的JSON

来自分类Dev

在Swift中使用reduce()函数而无需第二个参数

来自分类Dev

如何使用RxJ执行嵌套的reduce操作?

来自分类Dev

在嵌套对象中使用hasOwnproperty()

来自分类Dev

在Oracle中使用“嵌套”事务

来自分类Dev

在Python中使用嵌套列表

来自分类Dev

在Oracle中使用“嵌套”事务

来自分类Dev

在Excel中使用AND嵌套IF语句

来自分类Dev

在Sparql中使用嵌套图

来自分类Dev

在foreach中使用嵌套键

来自分类Dev

如何在Swift中使用嵌套的便捷故障初始化器检查nil?

来自分类Dev

如果我在Swift的多个级别中使用嵌套的类或结构,是否会有性能问题?

来自分类Dev

在函数中使用嵌套帮助函数时,Swift Build的速度较慢

来自分类Dev

如何在Swift中使用嵌套的JSON参数上传多部分表单数据?

来自分类Dev

在数组数组的map()中使用reduce()

来自分类Dev

Clojure:如何在“ reduce”中使用“ and”?

来自分类Dev

如何在字典中使用reduce

来自分类Dev

在Python中使用Reduce函数查找阶乘

来自分类Dev

在Map Reduce作业中使用多线程

来自分类Dev

如何在 Fauxton 中使用 reduce

来自分类Dev

Spark:在 SparkSql 中使用 map 和 reduce

来自分类Dev

在Swift中使用sortedArrayUsingSelector

来自分类Dev

在Swift中使用NSTimer

来自分类常见问题

在Swift中使用谓词

来自分类Dev

在Swift中使用标签

来自分类Dev

在Swift中使用<-

来自分类Dev

在Swift中使用stringByReplacingCharactersInRange

来自分类Dev

在Swift中使用AudioBufferList

来自分类Dev

在Swift中使用RestKit