On Sat, 24 Apr 2010 05:07:41 -0400, Dan <daniele.ni...@gmail.com> wrote:
So there's my questions
Why D2 changed in this way the operators overloading?
To avoid repeating tons of boilerplate code.
For example, you can do this:
void opOpAssign(string op)(ref Vector3 other) if (op == "+=" || op == "-=")
{
mixin("x " ~ op ~ " other.x");
mixin("y " ~ op ~ " other.y");
mixin("z " ~ op ~ " other.z");
}
This takes care of 2 functions with one implementation. Other types might
enjoy even more operator coverage, but vectors can't be generalized for
all operators to one function.
I saw the the compiler compiles both the functions, even considering
this I assume it's not safe to use the old D1 way,
right?
operator overloads are not special functions, they are just normal
functions that the compiler calls. You can still build opAddAssign
because there is nothing inherently special about that function.
opAddAssign is a valid symbol name.
Oh, and I've found the documentation really confusing on this metter.
Hopefully the book will clear this up.
-Steve