如何对元组中的所有元素求和

时间:2016-10-08 13:01:20

标签: swift tuples

在Swift中,即元组let tp = (2,5,8)

除了传统以外,最简单,最明智的方法是什么?

let sum = tp.0 + tp.1 + tp.2

1 个答案:

答案 0 :(得分:0)

您的方法是最直接的。另一种选择难以阅读,但它也有效:

let s = Mirror(reflecting: x).children.map {$1 as! Int}.reduce(0,+)

Mirror(reflecting: x).children获得表示原始元组的一系列名称 - 值对。序列的每个元素都是(String,Any)元组。 map {$1 as! Int}将此序列转换为表示元组元素值的Int s序列; reduce(0,+)生成这些值的总和。

您可以将mapreduce组合在一个表达式中,以获得更低的可读性:

let s = Mirror(reflecting: x).children.reduce(0,{$0.1.value as! Int + $0.0})

注意:不言而喻,这会在运行时因包含Int以外的类型值的元组而崩溃。