在Swift中,即元组let tp = (2,5,8)
。
除了传统以外,最简单,最明智的方法是什么?
let sum = tp.0 + tp.1 + tp.2
答案 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,+)
生成这些值的总和。
您可以将map
和reduce
组合在一个表达式中,以获得更低的可读性:
let s = Mirror(reflecting: x).children.reduce(0,{$0.1.value as! Int + $0.0})
注意:不言而喻,这会在运行时因包含Int
以外的类型值的元组而崩溃。