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