I am sorry, I did mean execute. I hoped that it would execute initialize when the class (or variableNames) where called by the program.. After running/execute the initialize method it is working :)
Thanks for you'r help, Mispunt On 2/27/07, Bert Freudenberg <[EMAIL PROTECTED]> wrote:
What do you mean with "isn't running"? As I wrote, you have to execute it manually whenever you change the initialize method. - Bert - On Feb 27, 2007, at 13:33 , Mispunt wrote: > After some better testing, It doesn't work :S It seems that the > initialize of the constants class isn't running... (the normal > classVariableNames are working...) I have to use the poolDictionary > because there are some codes that return in a lot of classes.. > > Mispunt > > On 2/27/07, Mispunt <[EMAIL PROTECTED]> wrote: >> Thanks Bert, it works. When I am using the poolDictionary it isn't >> possible to use the constants in the Workspace right? or do I have to >> write methods for them when I want to use them? (well I don't want >> to, >> because it is just for testing purpose). >> >> Mispunt. >> >> On 2/27/07, Bert Freudenberg <[EMAIL PROTECTED]> wrote: >> > On Feb 27, 2007, at 10:08 , Mispunt wrote: >> > >> > > Hi all, >> > > >> > > For programming my Lego Mindstorms NXT I have to use codes >> like 16r1F. >> > > But I actually want to be able to use "readable" codes. In a >> language >> > > like Java I will do that with a static const, but as far as I >> know I >> > > have to do it with symbols in Smalltalk. >> > >> > No, there is a better way. >> > >> > If you are inside one class (or its subclasses), you would use >> "class >> > variables", one per constant. You add them in the class template: >> > >> > Object subclass: #Bla >> > instanceVariableNames: '' >> > classVariableNames: 'Const1 Const2' >> > poolDictionaries: '' >> > category: 'Bert-Bla' >> > >> > and the initialization code is in a class-side #initialize method: >> > >> > initialize >> > "self initialize" >> > Const1 := 16r1F. >> > Const2 := 12345. >> > >> > You need to execute the "self initialize" in the browser to do the >> > initialization. It will be executed automatically when loaded into >> > another image. >> > >> > Class variables are capitalized because they are sort-of "global", >> > they can be used in the defining class, its metaclass, and all >> their >> > subclasses. If you need to give access to these variables across >> the >> > class hierarchies, then you would do the same, but as a subclass of >> > SharedPool: >> > >> > SharedPool subclass: #BlaConstants >> > instanceVariableNames: '' >> > classVariableNames: 'Const1 Const2' >> > poolDictionaries: '' >> > category: 'Bert-Bla'. >> > >> > To use this "pool" of variables in another class, list it as a >> "pool >> > dictionary": >> > >> > Object subclass: #Bla >> > instanceVariableNames: '' >> > classVariableNames: '' >> > poolDictionaries: 'BlaConstants' >> > category: 'Bert-Bla' >> > >> > This makes all class variables of BlaConstants available to Bla >> as if >> > they were class variables. >> > >> > There are quite a few other ways to allow "global" variables in >> > Smalltalk, but this one is the "clean" way to do it which works >> > nicely with tools like Monticello. >> > >> > - Bert - >> > _______________________________________________ Beginners mailing list Beginners@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/beginners
_______________________________________________ Beginners mailing list Beginners@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/beginners