Re: opSlice Bug?

2012-11-29 Thread Namespace

That is what I thought also.
That is awfully and limited. :/


Re: opSlice Bug?

2012-11-29 Thread Ali Çehreli

On 11/29/2012 08:15 AM, Namespace wrote:

Why I have to write
arr2[] += arr[][]
instead of
arr2[] += arr[]
? Bug or 'feature'? :P

Code:
http://dpaste.dzfl.pl/4c732f4c


Apparently, the array-wise operations require the following syntax:

a[] += b[];

In other words, the compiler wants to see [] on the right-hand side as 
well. The following does not work with the same error message that you get:


int[] a, b;
a[] += b;

Error: invalid array operation a[] += b (did you forget a [] ?)

It is the same in your case. You have a function that returns a slice 
but the compiler still wants to see [] on the rigth-hand side:


int[] foo()
{
int[] b;
return b;
}

void main()
{
int[] a;
a[] += foo();// <-- Same compilation error
}

That's why you need to put the [] after it:

a[] += foo()[];

I think it is just the requirement of the syntax. (?)

Ali


Re: opSlice Bug?

2012-11-29 Thread Namespace
Yes, that could be better (but I don't like it), but my code 
should compile as well, or not?


Re: opSlice Bug?

2012-11-29 Thread Ali Çehreli

On 11/29/2012 08:50 AM, Namespace wrote:

On Thursday, 29 November 2012 at 16:46:45 UTC, Ali Çehreli wrote:

On 11/29/2012 08:15 AM, Namespace wrote:

Why I have to write
arr2[] += arr[][]
instead of
arr2[] += arr[]
? Bug or 'feature'? :P

Code:
http://dpaste.dzfl.pl/4c732f4c


opSplice, eh? Is that another undocumented feature or one that has
been deprecated?

Ali


http://dlang.org/operatoroverloading.html#Slice


Thanks. I really did read it as opS_p_lice, found a few references on 
dlang.org, none on any spec page and got a little frustrated. I did not 
realize that I had clearly misread it.


I had even written some notes about opSlice:

  http://ddili.org/ders/d.en/operator_overloading.html

Apparently I had thought that it better returned a special type:

struct Range
{
// ...
}

struct Container
{
// For the object[] syntax
Range opSlice()
{
Range allElements;
// ... must provide access to all elements ...
return allElements;
}

/* ... */
}

Ali


Re: opSlice Bug?

2012-11-29 Thread bearophile

Ali Çehreli:

opSplice, eh? Is that another undocumented feature or one that 
has been deprecated?


I think it's not deprecated:
http://dlang.org/operatoroverloading.html#Slice

Bye,
bearophile


Re: opSlice Bug?

2012-11-29 Thread Namespace

On Thursday, 29 November 2012 at 16:46:45 UTC, Ali Çehreli wrote:

On 11/29/2012 08:15 AM, Namespace wrote:

Why I have to write
arr2[] += arr[][]
instead of
arr2[] += arr[]
? Bug or 'feature'? :P

Code:
http://dpaste.dzfl.pl/4c732f4c


opSplice, eh? Is that another undocumented feature or one that 
has been deprecated?


Ali


http://dlang.org/operatoroverloading.html#Slice


Re: opSlice Bug?

2012-11-29 Thread Ali Çehreli

On 11/29/2012 08:15 AM, Namespace wrote:

Why I have to write
arr2[] += arr[][]
instead of
arr2[] += arr[]
? Bug or 'feature'? :P

Code:
http://dpaste.dzfl.pl/4c732f4c


opSplice, eh? Is that another undocumented feature or one that has been 
deprecated?


Ali