Nice readable code with initializer

Виталий Фадеев vital.fadeev at gmail.com
Thu Mar 5 07:01:27 UTC 2020


On Thursday, 5 March 2020 at 06:48:53 UTC, Виталий Фадеев wrote:
> Searching for beauty code implementation.
>
> Goal is: Create new object with "custom initializer".
>
> "custom initializer" - is function, executed in _ctor, in 
> object scope.
>
> Main Goal is: "clean readable beauty code".
>
> Like this and better:
>
>
> class DataGrid : Base
> {
>     this()
>     {
>         super();
>
>         CR!VBoxLayout({
>             sizeWidthMode  = SIZE_MODE.PARENT;
>             sizeHeightMode = SIZE_MODE.PARENT;
>
>             CR!GridLayout({
>                 id             = "grid";
>                 sizeWidthMode  = SIZE_MODE.PARENT;
>                 sizeHeightMode = SIZE_MODE.FIXED;
>                 h              = 400;
>             });
>
>             CR!HCenterLayout({
>                 CR!(Pager!TextButton) ({
>                    id = "pager";
>                 });
>             });
>         });
>     }
> }
>
>
> class Base
> {
>     T CR( T, F )( F func )
>     {
>         auto c = new T();
>         c.Apply( func );
>         return c;
>     }
>
>     void Apply( F )( F func )
>     {
>         func();
>     }
> }
>
> In code above created tree and configured nodes.
>
> Trouble in code above is: "custom initializer" - executed in 
> DataGrid context.
>
> How to execute "custom initializer" in VBoxLayout context and 
> keep readable beauty ?

Conceptual question.

How to implement next pseudo-code in D ?

         VBoxLayout
             sizeWidthMode  = SIZE_MODE.PARENT
             sizeHeightMode = SIZE_MODE.PARENT

             GridLayout
                 id             = "grid"
                 sizeWidthMode  = SIZE_MODE.PARENT
                 sizeHeightMode = SIZE_MODE.FIXED
                 h              = 400

             HCenterLayout
                 Pager!TextButton
                    id = "pager"



More information about the Digitalmars-d-learn mailing list