[Newbies] constants

Norbert Hartl norbert at hartl.name
Sun Sep 28 14:19:19 UTC 2008


On Sun, 2008-09-28 at 08:56 -0500, Mark Volkmann wrote:
> On Sep 28, 2008, at 8:33 AM, Norbert Hartl wrote:
> 
> > On Sun, 2008-09-28 at 07:54 -0500, Mark Volkmann wrote:
> >> How are constants represented in Smalltalk? Do you create a method
> >> whose name is the name of the constant and return the value?
> >>
> > You have several ways to define something you could call
> > "constant". If we see a constant as a global accessible
> > thing that doesn't change and has something like a name
> > you have multiple options:
> >
> > - #myConstant Symbol. That is globally available and is always
> >  the same object.
> >
> > - a class. A class is an object with a name that is globally
> >  accessible and gives the same object everytime
> >
> > - cached instances. You define class methods that create
> >  instances and cache the instances. This way you get
> >  the same object everytime you invoke the class method
> >
> > I think there even more possibilities. What you should
> > use depends on what you are trying to achieve. A symbol
> > is just the name. A class serves this purpose quite well
> > for a lot scenarios. But you don't want to create classes
> > only because you need some constant value.
> 
> 
> I think my main issue is scoping. I want to define a constant that is  
> associated with a class to avoid name conflicts. Maybe that's not the  
> Smalltalk way. Similarly I'm concerned about defining a class, then  
> later installing a library that contains a class with the same name as  
> one of mine. Does that issue come up very often? I'm concerned about  
> the lack of support for namespaces (packages in Java).
> 

You can have a look at the archives of the squeak-dev mailing list. 
Namespaces is one of the topics that appear regularly on the list :)
The discussions about it are quite good and give you good insights in
this topic. And you'll might see the need to take off the java glasses
if you deal with Smalltalk ;)

Norbert



More information about the Beginners mailing list