A possible solution for the opIndexXxxAssign morass

JC jcrapuchettes at gmail.com
Tue Oct 13 10:22:42 PDT 2009


This idea along with a slice overload would save me a lot of pain and 
performance while working with matrices in my production code. Any ideas when 
this could be implemented in D1?
Jonathan

Andrei Alexandrescu wrote:
> Right now we're in trouble with operators: opIndex and opIndexAssign 
> don't seem to be up to snuff because they don't catch operations like
> 
> a[b] += c;
> 
> with reasonable expressiveness and efficiency.
> 
> Last night this idea occurred to me: we could simply use overloading 
> with the existing operator names. Consider:
> 
> a += b
> 
> gets rewritten as
> 
> a.opAddAssign(b)
> 
> Then how about this - rewrite this:
> 
> a[b] += c
> 
> as
> 
> a.opAddAssign(b, c);
> 
> There's no chance of ambiguity because the parameter counts are 
> different. Moreover, this scales to multiple indexes:
> 
> a[b1, b2, ..., bn] = c
> 
> gets rewritten as
> 
> a.opAddAssign(b1, b2, ..., bn, c)
> 
> What do you think? I may be missing some important cases or threats.
> 
> 
> Andrei



More information about the Digitalmars-d mailing list