Custom attributes (again)

Ary Manzana ary at esperanto.org.ar
Thu Apr 5 20:30:22 PDT 2012


On 4/6/12 1:35 AM, Walter Bright wrote:
> On 4/5/2012 5:00 AM, Manu wrote:
>> C# and Java both have attributes, following these established design
>> patterns, I
>> don't think there should be any mystery over how they should be
>> implemented.
>
> At the Lang.NEXT conference over the last 3 days, I was able to talk to
> many smart people about attributes. But I did find some confusion - are
> they best attached to the variable/function (i.e. "storage class"), or
> attached to the type ("type constructor")? I think the former. Attaching
> it to the type leads to all sorts of semantic issues.

I don't understand the difference between "storage class" and "type 
constructor". I guess I do. But my answer is the same as deadalnix: they 
are attached to declarations (at compile time).

Can you give us an example of the confusion that arose? I can't 
understand it without examples.

I think it should work like this:

@custom
class Foo {

   @ custom
   void bar() { }

   void baz() { }
}

class Other {}

__traits(hasAttribute, Foo, 'custom') --> true
__traits(hasAttribute, Other, 'custom') --> false

// I have no idea how to iterate the members of Foo, or get a reference 
to the "bar" method... I can't understand what __traits(getMember) 
returns from the docs...


More information about the Digitalmars-d mailing list