Avatar
可変長型パラと独立にタプルの各要素を操作する方法が提供されていれば(↓の場合はメソッドの形で提供しているけど別の方法も考えられる)、それを土台にして可変長型パラを論じられないかな? func square<T1: Numeric, T2: Numeric>(of values: (T1, T2)) -> (T1, T2) { values.map { $0 * $0 } } square(of: (3, 5.0)) // (9, 25.0) func firsts<S1: Sequence, S2: Sequence>(of sequences: (S1, S2)) -> (S1.Element?, S2.Element?) { sequences.map { $0.first } } firsts(of: ([2, 3, 5], "XYZ")) // (2, "X") func descriptions<T1: CustomStringConvertible, T2: CustomStringConvertible>(of values: (T1, T2)) -> (String, String) { values.map { $0.description } } descriptions(of: (42, true)) // ("42", "true") func sum<T1: IntConvertible, T2: IntConvertible>(of values: (T1, T2)) -> Int { values.reduce(0) { $0 + $1.asInt() } } sum(of: (3, 5.0)) // 8 (edited)