[Issue 3188] remove opIndexAssign from the language
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Fri Feb 5 05:41:55 PST 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3188
--- Comment #14 from Witold Baryluk <baryluk at smp.if.uj.edu.pl> 2010-02-05 05:41:54 PST ---
(In reply to comment #11)
> (In reply to comment #4)
> > (In reply to comment #3)
> >> That's one reason. The other reason is that it can do many things that a ref
> >> return can't, such as
> >> - converting the value to an internal representation
> >> - validating the set value
> >> - calling some external API to set the value
> >> - triggering side effects beyond setting the value in memory
> >
> > All of these things are doable from a returned struct which contains opAssign.
>
> But it would make code unnecessarily complex, and make the compiler have to
> work harder to optimise it to something as well-performing as a simple
> opIndexAssign.
Well only real problem with opIndexAssign is code duplication and return value
of opIndexAssign.
But this is easly solved:
- duplicated code can be easly moved to private auxilary method used both by
opIndex and opIndexAssign
- return value can be void if one doesn't want to use chaining (a[2] = a[3] =
5 will be then invalid, becuase (a[3] = 5) have no value).
Other solution is to use opIndexAssign for assigment if it is implemented, then
try opIndex and check if it returns ref, if yes, perform opIndex + returned ref
dereferencing assigment, if both is not possible emit compile error.
If automatisation is not good, label opIndex by some kind of property
(@implicitIndexAssign ?)
>
> (In reply to comment #10)
> > You are confusing opMul with opStar.
>
> Yet another reason opStar was the wrong choice of name, besides inconsistency.
Bad name indeed.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list