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

Reply via email to