[Newbies] how to create an object (of a selection of classes)

Benjamin Schroeder benschroeder at acm.org
Fri Jun 23 01:24:46 UTC 2006


On Jun 22, 2006, at 7:07 PM, Jeroen van Hilst wrote:

> I've tried something like:
>
> (#(EllipseMorph RectangleMorph) at: (2 atRandom)) new.
>
> But thats too silly ? Is there some connection to get a class from  
> a symbol
> ? Or is that the wrong direction ?

I like your approach. I think using the #() array here will give you  
Symbols - but you can use a literal array with curly braces -

	{EllipseMorph. RectangleMorph}

to get the actual classes. (Note the period between the array  
elements.) This form of literal evaluates its expressions and uses  
the results to build the array. it's also useful when you want to  
build an array out of some variables, or have some short math or  
something to do.

Just to mention it, you can also get to a class from a Symbol by  
doing something like

	Smalltalk at: #EllipseMorph

if that's needed in your situation.

I don't know if you saw, but collections also respond to #atRandom  
directly, so you could do

	{EllipseMorph. RectangleMorph} atRandom new.

Hope this helps,
Benjamin Schroeder



More information about the Beginners mailing list