logo       

Re: Traits: msg#00135

lang.smalltalk.squeak.beginners

Subject: Re: Traits

On Sep 25, 2007, at 2:00 , Nick Ager wrote:


Armed with new knowledge of Traits gained from the excellent "Squeak By
Example" I tried:
Smalltalk allClasses select: [:each | each hasTraitComposition]

which gave:

an OrderedCollection(ActionSequence BalloonBezierSimulation BalloonEngine
BalloonEngineConstants BasicRequestor Behavior BrowserProvider
....WorldMenuProvider XMLTokenizer ZipConstants ZipFileConstants)

However browsing to a random class say "ActionSquence", doesn't show any
evidence of Trait composition. Is this a problem with the current browser?

No. #hasTraitComposition only checks if the traitCompositions variable is not nil - the composition may still be empty. Which can happen quite easily since that variable is lazily initialized by sending #traitCompositions.

This appears to be by design, the codebase is scattered with #hasTraitComposition checks. But missing only one occurrence where #traitCompositions is sent unguarded by #hasTraitComposition will get the variable populated. And it will never get reset to nil as far as I can tell.

- Bert -


<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise