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