Thread overview
Blog Post #0105: D-specific Stuff for GUI Programming
Mar 23, 2020
Ron Tarrant
Mar 23, 2020
drug
Mar 23, 2020
Jacob Carlborg
Mar 23, 2020
Jacob Carlborg
Mar 23, 2020
Jacob Carlborg
Mar 23, 2020
Ron Tarrant
March 23, 2020
Today starts a new series I'm calling Snippets and it's about various D-specific stuff that may come in handy when building a GUI. You can find it right here: https://gtkdcoding.com/2020/03/23/0105-dlang-ui-snippets-i.html
March 23, 2020
On 3/23/20 1:02 PM, Ron Tarrant wrote:
> Today starts a new series I'm calling Snippets and it's about various D-specific stuff that may come in handy when building a GUI. You can find it right here: https://gtkdcoding.com/2020/03/23/0105-dlang-ui-snippets-i.html

Thank you for you efforts!
I'm waiting for your post about Observer.
March 23, 2020
On Monday, 23 March 2020 at 10:02:48 UTC, Ron Tarrant wrote:
> Today starts a new series I'm calling Snippets and it's about various D-specific stuff that may come in handy when building a GUI. You can find it right here: https://gtkdcoding.com/2020/03/23/0105-dlang-ui-snippets-i.html

If it's enough with CTFE compatible code in the constructor, the following is a much simpler version:

class DSingleton
{
    private __gshared DSingleton instance = new DSingleton;

    DSingleton get()
    {
        return instance;
    }
}

--
/Jacob Carlborg
March 23, 2020
On Monday, 23 March 2020 at 10:26:33 UTC, Jacob Carlborg wrote:

> If it's enough with CTFE compatible code in the constructor, the following is a much simpler version:
>
> class DSingleton
> {
>     private __gshared DSingleton instance = new DSingleton;
>
>     DSingleton get()
>     {
>         return instance;
>     }
> }

Or if an immutable instance work, the getter is not necessary and the instance can be exposed directly.

class DSingleton
{
    immutable DSingleton instance = new DSingleton;
}

--
/Jacob Carlborg
March 23, 2020
On Monday, 23 March 2020 at 10:41:43 UTC, Jacob Carlborg wrote:

> class DSingleton
> {
>     immutable DSingleton instance = new DSingleton;
> }

Should of course be `static`:

class DSingleton
{
    static immutable DSingleton instance = new DSingleton;
}

--
/Jacob Carlborg
March 23, 2020
On Monday, 23 March 2020 at 10:45:24 UTC, Jacob Carlborg wrote:
> On Monday, 23 March 2020 at 10:41:43 UTC, Jacob Carlborg wrote:
>
>> class DSingleton
>> {
>>     immutable DSingleton instance = new DSingleton;
>> }
>
> Should of course be `static`:
>
> class DSingleton
> {
>     static immutable DSingleton instance = new DSingleton;
> }
>
> --
> /Jacob Carlborg

Cool. Thanks, Jacob.

I can't take credit for the Singleton code, though. I stole it from here: https://wiki.dlang.org/Low-Lock_Singleton_Pattern