“The warning is: this only happens when the *source* code of the #initialize 
methods changes. So sometimes, you will have to touch that method to force it.”

Perhaps there should be an overload able method that decides whether or not to 
initialize the class, such that classes relying on reinitializing  every time a 
change is merged, can do this by simply answering true?


From: Pharo-users [mailto:pharo-users-boun...@lists.pharo.org] On Behalf Of 
Dimitris Chloupis
Sent: Wednesday, January 20, 2016 3:47 PM
To: Any question about pharo is welcome <pharo-users@lists.pharo.org>
Subject: Re: [Pharo-users] Updating a project and NIL class variables

no apologies owed, I just asked because I want to make sure Pharo wont do 
anything weird behind my back :)

On Wed, Jan 20, 2016 at 4:39 PM Sven Van Caekenberghe 
<s...@stfx.eu<mailto:s...@stfx.eu>> wrote:

> On 20 Jan 2016, at 15:34, Dimitris Chloupis 
> <kilon.al...@gmail.com<mailto:kilon.al...@gmail.com>> wrote:
>
> Thank you for the info but I think I did not make myself clear because you 
> say "remain nil"
>
> Ok Imagine a class SomeClass and that class has a variable we will call 
> SomeVariable, class variable that is
> , there is no class initialize method, now that class has a method that is 
> eventually called ,
> someMethod
>
> SomeVariable ifNil: [ SomeVariable := 'hello world']
>
> so when I decide to update this class via metacello loading the latest 
> version from github ,  SomeVariable will have the value 'hello world'
>
> My question is , will SomeVariable after I do the update revert back to nil  
> or stay 'hello world' ?
>
> If your answer is no, and it stays 'hello world' then yes i need an 
> initialize method and call it at update time.

Argh, I should have said: keeps it value, will not revert to nil.

Sorry for the confusion !

> On Wed, Jan 20, 2016 at 2:54 PM Sven Van Caekenberghe 
> <s...@stfx.eu<mailto:s...@stfx.eu>> wrote:
> They remain nil.
>
> That is why #initialize on the class side is needed.
>
> You can call that explicitly in a post load script, or rely on the class 
> loading mechanism that normally calls #initialize automatically when loading 
> a class. The warning is: this only happens when the *source* code of the 
> #initialize methods changes. So sometimes, you will have to touch that method 
> to force it.
>
> I hope that makes sense.
>
> See MCMethodDefinition>>#postloadOver:
>
> > On 20 Jan 2016, at 13:41, Dimitris Chloupis 
> > <kilon.al...@gmail.com<mailto:kilon.al...@gmail.com>> wrote:
> >
> > So my question is this , I have a class with nil variables that are lazy 
> > initialised only when needed the first time and of course they keep their 
> > values from there on.
> >
> > Lets say I get the latest update from github via metacello over an older 
> > update that I already have inside the image , do those variables revert 
> > back to nil values ? or do they keep their values as they are ?
>
>

Reply via email to