@disable this for structs

Dicebot public at dicebot.lv
Fri Feb 28 05:21:56 PST 2014


On Friday, 28 February 2014 at 12:59:32 UTC, Mike Parker wrote:
>> Ideally one should use modules as namespaces :P
>
> I don't buy that. That works fine to resolve conflicts, but it 
> doesn't work for fine-grained namespace management. And when 
> using named imports, that means everything in the module then 
> belongs to that namespace, which isn't at all what I want. 
> Besides which, using either fully-qualified names or named 
> imports puts the impetus on the caller. If I design my modules 
> around namespaces with the understanding that the caller will 
> type foo.bar.myfunc all the time, there are bound to be 
> conflicts when they forget to do it.

D design is based on module as smallest composition unit. If you 
find yourself in situation where you want to have two namespaces 
in a single module, you should split it into two modules.

Putting impetus on caller (named imports) is good here and huge 
advantage over C++ way in my opinion. It gives more control over 
application naming scheme.

> On the other hand, by wrapping my namespaced stuff in structs 
> or classes, I can have multiple namespaces per module, some 
> things completely outside the namespace, and the user gets a 
> compiler error if they don't use it. To me, that's much, much 
> neater.

It simply does not fit with D type system, most importantly with 
accessiblity attributes. I'd hate to encounter all that you 
mention as "benefits" in some D library I am forced to use.


More information about the Digitalmars-d-learn mailing list