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