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.

Reply via email to