[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