Let me clarify: I'm only talking about removing tuple element names from the *pattern* grammar. They would still be allowed on tuple types, which is what you are using.
-Chris > On Jun 14, 2017, at 9:45 PM, Charlie Monroe <[email protected]> wrote: > > >> On Jun 15, 2017, at 6:01 AM, Chris Lattner via swift-evolution >> <[email protected]> wrote: >> >> >>> On Jun 12, 2017, at 10:07 PM, Paul Cantrell <[email protected]> wrote: >>> >>> What’s the status of this Chris’s double parens idea below? It garnered >>> some positive responses, but the discussion seems to have fizzled out. Is >>> there something needed to help nudge this along? >>> >>> What’s the likelihood of getting this fixed before Swift 4 goes live, and >>> the great wave of readability regressions hits? >> >> We discussed this in the core team meeting today. Consensus seems to be >> that a change needs to be made to regain syntactic convenience here. >> Discussion was leaning towards allowing (at least) the parenthesized form, >> but more discussion is needed. >> >> >> One (tangential) thing that came up is that tuple element names in tuple >> *patterns* should probably be deprecated and removed at some point. Without >> looking, what variables does this declare?: >> >> let (a : Int, b : Float) = foo() > > Personally, I use this often as "anonymous structs" (which tuples IMHO are). > Often, there is a return type used in 1-2 methods and in such case, I feel > that declaring a struct MyMethorReturnStruct is unnecessary and I use tuples > with named elements, so that the call site can easily access the information > it needs, which is particularly convenient if both tuple member are of the > same type: > > func parseName() -> (firstName: String, lastName: String) > > Instead of deprecating this, would it be possible to make this a syntax for > generating a truly anonymous structure? It can internally have a name that > mangles together the element *names and types*, so: > > let name = (firstName: "John", lastName: "Doe") > > type(of: name) == _firstName_String_lastName_String_ > > Hence you would be able to pass this structure wherever it's declared exactly > the same, but: > > func passName() -> (name1: String, name2: String) { > return parseName() // see above for declaration > } > > will result in error as (firstName: String, lastName: String) cannot be > converted to (name1: String, name2: String). > > >> >> ? >> >> -Chris >> >> _______________________________________________ >> swift-evolution mailing list >> [email protected] >> https://lists.swift.org/mailman/listinfo/swift-evolution > _______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
