On Thursday, 27 April 2017 at 05:41:43 UTC, Daniel N wrote:
On Wednesday, 26 April 2017 at 18:34:48 UTC, Carl Sturtivant wrote:
On Wednesday, 26 April 2017 at 15:00:30 UTC, Steven
Image using frameworks which conveniently allow adding features to a struct...

struct Beholder
{
  mixin Entity!Movable;
  mixin Render!"Beholder.png";
}

Why distribute features as mixin templates when with AliasThis fully implemented they can be distributed as structs and are therefore encapsulated?

struct Beholder
{
    //now Entity(T) is a struct template, not a mixin template
  Entity!Movable entity;
    //ditto
  Render!"Beholder.png" render;
    //in my hierarchical form
  alias entity, render this;
}

Even better, with alias for embedded aliased-to-this structs made working usefully, name management can be done before embedding the features, by having another layer of embedding as in my earlier example here.
https://forum.dlang.org/post/hvdmtvjvccbkmkjzu...@forum.dlang.org

Broadly speaking, a mixin template is just "a bunch of unencapsulated declarations". And AliasThis is a way to remove a layer of encapsulation from "a bunch of declarations". (Though it cannot be used currently outside of a struct or class.) This just screams for simplification.

Reply via email to