On Monday, 24 September 2012 at 14:52:21 UTC, Steven
Schveighoffer wrote:
(int[]) x;
int a = x.length;
is a == 0 or 1?
I agree with Andrei, we need something different.
This is exactly the question I was going to ask ...
I don't profess to be even close to an expert on tuples, but I
feel they should be built-in to the language, since they are
actually language constructs that we are declaring types for.
Without any research or investigation, what about using a
different set of delimiters for tuples? Like {1,2,3}
... and exactly the syntax I was going to propose! {} is already
used in C languages for heterogeneous data
structures(structs/classes, JSON etc). Using () creates too many
special cases, especially in generic programming and seeing how
other languages are dealing with them we'd rather avoid them from
the very beginning.
Right now, I think that is reserved for static struct
initializers. But can't those be considered a tuple also?
Someone will probably destroy this 10 milliseconds after I send
it :)
-Steve
It would be awesome if we could make tuples generic initializers
for various data types in D. Not just structs but for instance
arrays:
int[] a = {1, 2, 3, 4};
Compiler possesses enough type information to know that this
tuple could be converted to the int[].
P.S. The only collision I see with {} is a delegate literal, but
to be honest it's not worth the merit and quite confusing in
fact. There are 3 other ways to define a delegate in D which will
cover all of the user's needs.