Pattern matching with Arrays

Yeah, this is something I've wanted to add for a while, along with pattern matching for dictionaries, which together with array matching I think would make a lot of JSON/plist wrangling much more pleasant. Since it's an additive feature, it's taken a backseat to more pressing source- and ABI-breaking changes we've wanted to get out of the way first.

-Joe

···

On Dec 17, 2016, at 9:43 PM, Mathew Sanders via swift-evolution <swift-evolution@swift.org> wrote:

I've just joined the list (hi!) so not sure if this has been discussed in the past.

Curious to hear if a future version of Swift might ever include some sort of pattern-matching extended to Arrays. Maybe something like the following:

let numbers: [Int]
        
switch numbers {
case :
    // to match an empty array
            
case [1, 2, 3]:
    // to match array with specific values
            
case [_, _, _]:
    // to match array with 3 Ints
            
case let [first, last]:
    // match a 2 element array and bind first and last elements
            
case let [first, next...]:
    // to match array with at least one element
    // bind first element, and bind other elements (could be empty)
    // first: Int, next: [Int]
}

I love the pattern matching on tuples, and would love to see if extend to Arrays as well, but not sure if it fits with future goals for the language.

1 Like