Parameter Packs
Used by SwiftUI's ViewBuilder, Regex captures, async helpers, and libraries that previously needed many overloads.
// Variadic generics (Swift 5.9): abstract over any number of types
func allPresent<each T>(_ value: repeat (each T)?) -> (repeat each T)? {
for v in repeat each value { // pack iteration (Swift 6.0)
if v == nil { return nil }
}
return (repeat (each value)!)
}
if let (a, b, c) = allPresent(Int("1"), "x", Double("2.5")) { print(a, b, c) }
struct Tuple<each Element> {
var elements: (repeat each Element)
init(_ elements: repeat each Element) { self.elements = (repeat each elements) }
}
func describeAll<each T: CustomStringConvertible>(_ values: repeat each T) -> [String] {
var result: [String] = []
for v in repeat each values { result.append(v.description) }
return result
}
describeAll(1, "two", 3.0)