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)