Short list with things to finish for D2
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Wed Nov 18 16:20:50 PST 2009
Travis Boucher wrote:
> bearophile wrote:
>> Andrei Alexandrescu:
>>
>>> * Encode operators by compile-time strings. For example, instead of
>>> the plethora of opAdd, opMul, ..., we'd have this:
>>>
>>> T opBinary(string op)(T rhs) { ... }
>>>
>>> The string is "+", "*", etc.
>>
>> Can you show an example of defining an operator, like a minus, with that?
>>
>
> T opBinary(string op)(T rhs) {
> static if (op == "-") return data - rhs.data;
> static if (op == "+") return data + rhs.data;
>
> // ... maybe this would work too ...
> mixin("return data " ~ op ~ "rhs.data;");
> }
>
> I love this syntax over the tons of different operation functions. Makes
> it so much nicer, especially when supporting a bunch of different
> paramater types (vectors are a good example of this).
Indeed, the advantage of this is that you can use string mixins to
implement many operations at once, instead of laboriously defining many
functions.
Andrei
More information about the Digitalmars-d
mailing list