+1 I’ve tried to write parameter lists like `acc, (valueA, valueB) in` in the 
past, expecting it to work like this

> On 05 May 2016, at 20:22, Dennis Weissmann via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> Following a short discussion with positive feedback on 
> [swift-users](http://thread.gmane.org/gmane.comp.lang.swift.user/1812 
> <http://thread.gmane.org/gmane.comp.lang.swift.user/1812>) I’d like to 
> discuss the following:
> 
> Tuples should be destructible into their components in parameter lists.
> 
> Consider the following code:
> 
> let a = [0,1,2,3,4,5,6,7,8,9]
> let b = [0,1,2,3,4,5,6,7,8,9]
> 
> let c = zip(a,b).reduce(0) { acc, tuple in
>   acc + tuple.0 + tuple.1
> }
> 
> tuple is of type (Int, Int).
> 
> The problem is that the calculation is not very comprehensible due to .0 and 
> .1. That’s when destructuring tuples directly in the parameter list comes 
> into play:
> 
> let c = zip(a,b).reduce(0) { acc, (valueA, valueB) in
>   acc + valueA + valueB
> }
> 
> The above is what I propose should be accepted by the compiler (but currently 
> isn’t).
> 
> Currently tuple destructuring is possible like this:
> 
> let c = zip(a,b).reduce(0) { (acc, tuple) in
>   let (valueA, valueB) = tuple
>   return acc + valueA + valueB
> }
> 
> This is not about saving one line ;-). I just find it much more intuitive to 
> destructure the tuple in the parameter list itself.
> 
> The same thing could be done for functions:
> 
> func takesATuple(someInt: Int, tuple: (String, String))
> 
> Here we also need to destructure the tuple inside the function, but the 
> intuitive place (at least for me) to do this would be the parameter list.
> 
> In the following example I'm making use of Swift’s feature to name parameters 
> different from their labels (for internal use inside the function, this is 
> not visible to consumers of the API):
> 
> func takesATuple(someInt: Int, tuple (valueA, valueB): (String, String))
> 
> Here valueA and valueB would be directly usable within the function. The 
> tuple as a whole would not be available anymore.
> 
> 
> Now it’s your turn!
> 
> 1. What do you think?
> 2. Is this worth being discussed now (i.e. is it implementable in the Swift 3 
> timeframe) or should I delay it?
> 
> Cheers,
> 
> - Dennis
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to