custom attribute proposal (yeah, another one)

Mafi mafi at example.org
Fri Apr 6 13:46:40 PDT 2012


Am 06.04.2012 20:52, schrieb Steven Schveighoffer:
> On Fri, 06 Apr 2012 14:23:45 -0400, Mafi <mafi at example.org> wrote:
>
>>
>> There's one difference I think.
>> struct approach:
>> struct Area { int x, y; }
>> Area sqare(int a) { return Area(x, y); }
>> //foo and bar are attributed the same
>> @Area(5, 5) int foo();
>> @square(5) int bar();
>>
>> whereas with the function approach:
>> @area(5, 5) int foo();
>> @square(5) int bar();
>> foo and bar have different attributes.
>>
[...]
> Also, if I see:
>
> @square(5) int foo();
>
> How do I know that I have to use __traits(getAttribute, foo, Area)?
>
> Another possibility:
>
> @attribute Area area(int w, int h) { return Area(w, h);}
> @attribute Area area(Area a) { return a;}
>
> Area square(int a) { return Area(a, a);}
>
> @area(5, 5) int foo();
> @area(square(5)) int bar();
>
> -Steve

The second possibility looks good. Especially because the lack of 
@attribute on square disallows @square.

Mafi


More information about the Digitalmars-d mailing list