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

Reply via email to