On 02-01-2012 06:25, Gou Lingfeng wrote:
D's definitions of "is" and "==" have so much redundency. That might
indicate some flaw. If references and values (for classes and arrays)
could be clearly distinguished in the syntax, the "is" operator is not
necessary at all.

Of course it is. 'is' is strictly identity, while == would call an overloaded opEquals, if any exists. This difference in semantics is *very* important when you do *not* want to call opEquals.


A related thing is element-wise operation. Consider
string[] a;
string[] b;
string[] c;
...
c[1..3]=a[1..3]~b[1..3];

and,

int[] a;
int[] b;
int[] c;
...
c[1..3]=a[1..3]+b[1..3];

The two pieces are very much similar, and I expect similar results. But
D doesn't provide element-wise concatenation, because it's not clear in
the syntax whether a[1..3] is a reference (for simple array
concatenation) or a value (for element-wise concatenation).


- Alex

Reply via email to