On Fri, 30 Mar 2012 02:42:03 -0400, Walter Bright <[email protected]> wrote:

On 3/29/2012 6:57 PM, Nick Sabalausky wrote:
How the heck does that improve encapsualtion? With D's implicit friends, it
*doesn't*, it's just shifting things around. There is NO encapsualtion
benefit there. Like Steven said, to *get* the encapsualtion, you have to
create a whole new module to stick "extraFunctionality" into.

It doesn't improve intra-module encapsulation, you're right. The point of UFCS, however, is so that *other* modules can extend a class's methods without breaking encapsulation.

This is misleading, the class being extended or the code that uses the extensions must import the extension methods or it doesn't work.

The OP to this sub-thread brought up your example in the article -- adding range functions to a class. Yes, you can do it, but it won't work with std.algorithm. There's no need to test this, because it fundamentally cannot work that way (see my counter-case).

-Steve

Reply via email to