Annotation of functions

bauss jj_1337 at live.dk
Tue Feb 20 13:39:17 UTC 2018


On Tuesday, 20 February 2018 at 12:55:31 UTC, psychoticRabbit 
wrote:
> On Tuesday, 20 February 2018 at 12:45:25 UTC, rikki cattermole 
> wrote:
>>
>> string creater() pure {
>> 	return "void func() {}";
>> }
>>
>> mixin(creator());
>>
>> That is why. There are plenty of functions, classes and 
>> structs that simply won't exist in the form of syntax until 
>> you execute CTFE.
>
> I think I'd fire anyone that wrote functions in that way ;-)
>

Why would you fire someone for writing idiomatic D?

It was kind of a bad example given, but there are legitimate 
reasons to generate functions like that.

Ex.

mixin template Property(T, string name)
{
     mixin("private T _" ~ name ~ ";");

     @property
     {
         mixin("T " ~ name ~ "() { return _" ~ name ~ "; }");

         mixin("void " ~ name ~ "(T newValue) { _" ~ name ~ " = 
newValue; }");
     }
}

mixin template ReadProperty(T, string name)
{
     mixin("private T _" ~ name ~ ";");

     @property
     {
         mixin("T " ~ name ~ "() { return _" ~ name ~ "; }");
     }
}

mixin template WriteProperty(T, string name)
{
     mixin("private T _" ~ name ~ ";");

     @property
     {
         mixin("void " ~ name ~ "(T newValue) { _" ~ name ~ " = 
newValue; }");
     }
}





More information about the Digitalmars-d mailing list