On Thu, Jan 19, 2017 at 3:51 PM, Siemen Baader <siemenbaader@gmail.com> wrote:

On Thu, Jan 19, 2017 at 11:33 AM, Cyril Ferlicot D. <cyril.ferlicot@gmail.com> wrote:

You just need a class variable #UniqueInstance and those methods:

current
�� �� "Can also be named #default or #instance"
�� �� �� �� ^ UniqueInstance
�� �� �� �� �� �� �� �� ifNil: [ UniqueInstance := self basicNew; initialize; yourself ]

Actually this should have been: (no `;` between basicNew and initialize).��

^ currentInstance
ifNil: [ currentInstance := self basicNew
initialize;
yourself ]

This is not a problem. But it illustrates that this would be nice to have it unit tested separately and mixed in with a trait/mixin to avoid the risk of manual errors in what in the end is an already solved problem - if one wants singletons, of course.

:)

Siemen

Wouldn't a class instance variable be better? I want new singletons for every subclass. http://rmod-pharo-mooc.lille.inria.fr/MOOC/Slides/Week3/C019-W3S03-Basic-Variables.pdf

I would also have used super new, why BasicNew? But my wish to create subclasses seems to answer that already.��

Thanks for your find-grained example, Cyril!

Siemen