On 16.02.2018 21:16, Jonathan M Davis wrote:
On Friday, February 16, 2018 21:01:02 Martin Nowak via Digitalmars-d wrote:
On 01/14/2018 12:21 AM, Timon Gehr wrote:
what would be the equivalent of this ?
` writeln(tuple!("x", "y", "z")(2, 3, 4).y); `
It would continue to work the same way.
I did consider adding a proposal for built-in named tuple syntax:
writeln((x: 2, y: 3, z: 4).y);
(int a, double b) t = (a: 1, b: 2.0);
int x = t.a;
double y = t.b;
Tuples are anonymous bundles, when you want a product type with field
names use a struct.
That's not necessarily unreasonable, but std.typecons.Tuple is frequently
used as a convenient way to return a group of values, and the trend has been
towards using named values, because those are easier to deal with as return
values, because they're somewhat self-documenting at that point, and they're
less error-prone. So, if we're talking about adding more complete tuples to
the language, if they don't have support for names, you then have the
problem of whether it's better to use the built-in tuples or something like
std.typecons.Tuple with named values, and there's a pretty strong argument
at that point that it's better to use the named tuples and lose whatever
benefits the built-in tuples might provide, because the named tuples result
in more maintainable code.
- Jonathan M Davis
This is not really problematic. Note that the /only/ improvement in the
DIP that does not apply to library tuples is the tuple construction syntax.