On Friday, 17 February 2023 at 22:58:19 UTC, ProtectAndHide wrote:


Actually, I just now understand 'why' (as opposed to 'how') private works in D the way it does.

In D, private within a module is (more-or-less) like static used in C outside of a function.

That is, in C it restrains the visibility to the current file, and so it does in D (visibility to the current module).

ok fine. That works well in C.

But C does not have classes! (user defined types with their own abstraction boundaries).

So what would happen if C got classes then?

Well, we already know -> C++ (private declared within a user-defined type, restrains visibility to that type). And so it does in C#, Java, Swift, Javascript .. ... ....

So in essence, the D module is still stuck in the C era it seems.

Now I'm fully convinced that OOP should never, ever, ever, be done in D.

Now I can finally move on ;-)

Reply via email to