Module-level visibility

Lars T. Kyllingstad public at kyllingen.NOSPAMnet
Tue Feb 16 00:19:33 PST 2010


bearophile wrote:
> I have shown this little program to some of my friends that program in Java/C#:
> 
> class Foo {
>     private int x;
> }
> void main() {
>     Foo f = new Foo;
>     f.x = 5;
> }
> 
> 
> When I say them this code compiles with D2 they usually tell me that the compiler has a bug.
> So I suggest Walter to ask other people, maybe at Google or else (and in this newsgroup too), if they think this feature of D2 is a good thing, before this feature is set in stone in D2 (I have no definite answer about this topic, I can't help you). If you are really sure this is a good feature, then you can ignore this post.


I think D's approach makes very much sense.

In D, the one writing the class will most likely also write the rest of 
the module, so one can assume they know what they're doing.  Also, the 
module is imported as a whole, and what happens within it is not visible 
to the user.

In Java, you don't have modules, nor do you have top-level functions, so 
classes play somewhat the role of D's modules.  As a library user you 
import the class, and it would be disastrous if you could suddenly play 
around with its private members.

-Lars



More information about the Digitalmars-d mailing list