Question about UDAs

Ali Çehreli acehreli at
Tue Aug 4 03:16:57 UTC 2020

On 8/2/20 8:00 PM, Cecil Ward wrote:

 > Ali Çehreli’s book mentions them briefly with an example
 > but that doesn’t seem to qualify as a realistic use-case.

The XML example I chose there qualifies as serialization like H. S. Teoh 
mentions. UDAs on user-defined type members are for marking them for 
later introspection in use cases like "do this for all members but take 
UDAs into account." For example, the UDA in my example contributes as 
"serialize all members as XML but obfuscate the members that have a 
special UDA."

UDAs were added to D by a request from Manu Evans and that's when I 
learned them. In one of Manu's use cases they would put a @Tweakable 
attribute to certain struct members. The effect of that attribute would 
be to compile special code that would expose that member in a dialog box 
where the developer would "tweak" its value to see how the program (a 
game) would behave at specific values of that member.

The awesomeness comes from the fact that once they have this @Tweakable 
machinery, they don't change their code at all: They put that attribute 
to certain members during development, find good values and then remove 
it; perhaps in half an hour. The only addition to code is one @Tweakable 
attribute and some magic produces a dialog box; then they remove the 
attribute. Pretty cool. :)

Manu's presentatian is available here:

Slide 25 at minute 18:30 is one spot he talks about it.


More information about the Digitalmars-d-learn mailing list