One case of array assignments

John Colvin john.loughran.colvin at gmail.com
Wed Mar 13 14:40:27 PDT 2013


On Wednesday, 13 March 2013 at 21:33:47 UTC, H. S. Teoh wrote:
> On Wed, Mar 13, 2013 at 10:20:53PM +0100, John Colvin wrote:
>> On Wednesday, 13 March 2013 at 21:07:18 UTC, H. S. Teoh wrote:
>> >On Wed, Mar 13, 2013 at 09:59:33PM +0100, John Colvin wrote:
>> >>On Wednesday, 13 March 2013 at 20:46:35 UTC, Timon Gehr 
>> >>wrote:
>> >[...]
>> >>>Then what's the meaning of
>> >>>
>> >>>int[3][3] x = [1,2,3];
>> >>>
>> >>>Is it
>> >>>
>> >>>int[3][3] x = [[1,2,3],[1,2,3],[1,2,3]];
>> >>>
>> >>>or
>> >>>
>> >>>int[3][3] x = [[1,1,1],[2,2,2],[3,3,3]];
>> >>
>> >>the former, clearly. It directly follows from
>> >>
>> >>int[3] a = 1;
>> >>
>> >>Every element of the array is initialised to the value 
>> >>given. x is
>> >>an array of arrays and hence each "element-array" is 
>> >>initialised to
>> >>the array on the right hand side.
>> >
>> >I don't like this. It adds a lot of parsing complexities just 
>> >for
>> >some syntactic sugar with no clear benefits beyond being 
>> >easier to
>> >type. Why not just use the existing array operations syntax?
>> >
>> >	int[3] a;
>> >	a[] = 1;	// makes intent clear
>> >
>> >	int[3][3] b;
>> >	b[] = [1, 2, 3]; // fits into current syntax already
> [...]
>> This is supposed to be static initialisation, which is 
>> different,
>> no?
>
> Hmm. In that case, what about a syntax adapted from the current 
> array
> ops?
>
> 	int[3] a[] = 1;
>
> But the problem is that it's ambiguous with the current specs 
> that
> interprets this as int[3][] a = 1.
>
> Why is it bad to have to explicitly list the elements for static
> initialization?
>
>
> T

I would be great if we could get rid of post-fix array 
declarations for good, but I'm not sure how realistic that is.


It's bad to have to explicitly list them because there could be 
hundreds, thousands or even millions of elements.


More information about the Digitalmars-d mailing list