Friends in D, the easy way!

bauss jj_1337 at live.dk
Mon Jun 18 07:24:47 UTC 2018


On Monday, 18 June 2018 at 06:37:41 UTC, Mr.Bingo wrote:
> These go in the module you want allow access to the outside 
> world just as if they were in the same module!
>
> auto Setter(string name, alias O, T)(T t)
> {
> 	mixin("t."~name~" = O();");
> }
>
> auto ref Getter(string name, T)(T t)
> {
> 	mixin("return t."~name~";");
> }
>
>
>
> x.Setter!("privateFieldName", { return value; }); // 
> privateFieldName = value;
> x.Getter!("privateFieldName"); // = privateFieldName
>
>
> You can think me now... or later, which ever you choose! I hope 
> there is no SOLID henchmen here!
>
> Of course, these should be used only between modules that are 
> tightly coupled... This can happen when a derived class needs 
> access to it's parent as if it were in the same module but the 
> modules are split only for parsing.

Looks like it would be very verbose and honestly I'd rather see 
an approach where the private fields has a public exposure 
through a function or something.

It looks much cleaner IMO.


More information about the Digitalmars-d mailing list