[swift-evolution] Pattern matching with Arrays

Joe Groff jgroff at apple.com
Thu Dec 22 10:46:17 CST 2016


> On Dec 17, 2016, at 9:43 PM, Mathew Sanders via swift-evolution <swift-evolution at 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.

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


More information about the swift-evolution mailing list