What is the stance on partial initializers when declaring multiplevariables of the same type?
Jonathan M Davis
jmdavisProg at gmx.com
Thu Jul 21 17:06:48 PDT 2011
On 2011-07-21 16:54, Andrei Alexandrescu wrote:
> On 7/21/11 6:44 PM, Simen Kjaeraas wrote:
> > On Thu, 21 Jul 2011 23:40:08 +0200, bearophile
> >
> > <bearophileHUGS at lycos.com> wrote:
> >> Nick Sabalausky:
> >>> Crazy, nutty, wacky idea...
> >>>
> >>> float (a, b, c) = 0.0;
> >>
> >> I'd like some syntax sugar for tuples in D (especially for their
> >> unpacking), that syntax goes against one of the most natural ways to
> >> define tuples. So it's not a good idea.
> >
> > It is highly unlikely that D will ever adopt that syntax for tuples,
> > due to the previously much-discussed comma operator (which, while
> > uncommon, is useful at times). I believe the syntax that came out on
> > top in earlier discussions was the upended hamburger bun, or banana
> > syntax:
> >
> > (| float f, string s |) foo = (| 1.2, "Eh, whut?" |);
>
> Here's a crazy idea:
>
> auto foo = tuple(1.2, "Eh, whut?");
Is this particular case, a built-in syntax buys you nothing, as you
demonstrate. I think that the case that Bearophile is always looking for is
something like this:
int i;
float f;
(i, f) = tuple(5, 2.2);
though that's more useful when the function is something fancier than tuple
which just so happens to return a tuple (as opposed to being specifically
designed just for creating them). How useful that really is ultimately, I
don't know, but it certainly adds something which you can't do without changes
to the language itself. Aside from assigning the pieces of a returned tuple to
existing local variables like that, I'm not aware of any real gain from adding
tuples directly to the language. Our template solution works quite well
overall. And whether assigning to existing local variables like above actually
makes adding tuples to the language itself worth it is certainly up for
debate. But I believe that that's the use case that Bearophile is particularly
interested in.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list