On Wednesday, 25 October 2017 at 22:19:23 UTC, Walter Bright wrote:
for core D devs.

"How Non-Member Functions Improve Encapsulation" by Scott Meyers

http://www.drdobbs.com/cpp/how-non-member-functions-improve-encapsu/184401197

You mean non-member functions are preferred? I encountered this more from performance point: especially in case of small structures like Point it would be more beneficial to pass them by value than by reference, which can be achieved by extension methods, but then you need to import the respective module to have those extension methods available. It would work more palatable if extension methods from the structure's module were available without requiring import. It may rely on static declarations inside the struct like C# does it:

struct Size
{
  int width,height;
  alias add=.add; //?
}

Size add(Size s1, Size s2)
{
  return Size(s1.width+s2.width, s1.height+s2.height);
}

or just work without it. Such alias would allow to provide extension methods from other modules, though this would mean circular dependency between modules.

Reply via email to