Hi Brent, Thanks! Those are great points!
I haven’t thought about the possibility of suppressing the external label. I like your option 2 very much! I’ll add it to the proposal and change the used variable names. - Dennis > On May 30, 2016, at 3:01 PM, Brent Royal-Gordon <[email protected]> > wrote: > >> // Allowed today: >> func takesATuple(tuple: (Int, Int)) { >> let valueA = tuple.0 >> let valueB = tuple.1 >> // ... >> } >> >> // Proposed syntax: >> func takesATuple(tuple (valueA, valueB): (Int, Int)) { >> // use valueA >> // use valueB >> } > > Personally, I find this example confusing because the label is "tuple", which > kind of reads like a keyword, and because you're using the same name for the > label and variable. If I understand the semantics you're proposing correctly, > I think it would be clearer to write this example like: > > // Allowed today: > func takes(a tuple: (Int, Int)) { > let valueA = tuple.0 > let valueB = tuple.1 > // ... > } > > // Proposed syntax: > func takes(a (valueA, valueB): (Int, Int)) { > // use valueA > // use valueB > } > > Incidentally, it may also be a good idea to define what happens if you write: > > func takes((valueA, valueB): (Int, Int)) > > Normally, if there's no separate label and variable name, they're the same, > but you can't have a label like `(valueA, valueB)`. I see two reasonably > sensible answers here: > > 1. It's equivalent to writing `_ (valueA, valueB)`. > 2. It's illegal. You have to write a label, or `_` if you don't want one. > > My preference would be for #2, but you're the designer, not me. > > -- > Brent Royal-Gordon > Architechies >
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
