Symbols to Class Names?
Bijan Parsia
bparsia at email.unc.edu
Mon Mar 12 18:22:51 UTC 2001
On Mon, 12 Mar 2001, Dan Shafer wrote:
> Thanks, Randal. But I think I didn't state my question clearly enough.
>
> I have done a select: to retrieve from Smalltalk all of the classes in the
> image. They are returned to me, however, as an IdentitySet (not an
> IdentityDictionary as I incorrectly stated in my message) containing Symbols
> rather than class names.
Dan, I'm still confused as to what you're doing and what you're *wanting*
to be doing.
Why uses a #select: when SystemDictionary>>classNames will give you the
list of symbols that are the class names?
For that matter, why uses #className when SystemDictionary>>allClasses
gives you a collection with the classes themselves? (Not to
mention #allClassesDo:)
(Note that there are behavior focused selectors too. And one could do some
funky stuff with subclass releated selectors in Behavior, Class, etc.)
> What I want to do now is to enumerate over this
> returned IdentitySet and, for each element it contains, obtain certain
> information about the class to which the Symbol corresponds. Symbols don't
> understand the messages sent to a PseudoClass object, so I can't extract useful
> information about the class from my efforts so far.
So:
Smalltalk allClasses
select: [:class | class allSubclasses isEmpty not].
returns all the classes with subclasses.
Smalltalk allClasses select: [:class | class hasMethods].
returns all the classes with methods. etc.
Of course, if you want to start with a list of symbols and *then* get the
classes, you could try:
symbolList collect: [:sym | Smalltalk at: sym].
Hope this helps.
Cheers,
Bijan Parsia.
More information about the Squeak-dev
mailing list
|