[squeak-dev] Re: Traits in Trunk - how to remove a trait from
a class?
Levente Uzonyi
leves at elte.hu
Mon Oct 22 00:49:16 UTC 2012
On Sun, 21 Oct 2012, Casimiro de Almeida Barreto wrote:
> It is also interesting that when you modify a Trait message inside a
> class (either directly in the browser or else during debbuging),
> there'll be a new message, particular to that class that diverges from
> the message in Traits, causing a kind of "overload" (two messages of the
> same name, one in the Traits definition other in the class definition).
> If developer doesn't get it ASAP, it can be source of huge trouble.
I guess that's how Traits should work.
Levente
>
> CdAB
>
> On 21-10-2012 02:47, Chris Cunningham wrote:
>> On Fri, Oct 19, 2012 at 1:39 AM, Andreas.Raab <andreas.raab at gmx.de> wrote:
>>> Chris Cunningham wrote
>>>> Is there a way (UI, code) to make a class NOT use any traits after a
>>>> class has a Trait assigned to it?
>>> Try this:
>>>
>>> Trait flattenTraitMethodsInClass: MyClass.
>> That would probably work well, but I wanted to remove the Trait and
>> all of the behavior related to the Trait from the class. I could do
>> this and then delete the methods, but that isn't really efficient.
>>
>> I did find the 'right' way to do this. To add a trait to a class, you
>> change the definition of the class in the browser to look like:
>>
>> Object subclass: #AClass
>> uses: ATraitComposition
>> instanceVariableNames: ...
>>
>> To remove that trait (and any others), change the definition to be:
>>
>> Object subclass: #AClass
>> uses: Array new
>> instanceVariableNames: ...
>>
>> This will remove the Trait and the behavior from the class (and, for
>> that matter, change the class definition code snippit). Odd, but it
>> works.
>>
>> In my case, the goal was a temporary trait usage while building the
>> parser, with the intention of removing the behavior from all of the
>> classes later. Or, of course, removing it from other classes that I
>> accidentally added the trait to.
>>
>> -Chris
>>
>>
>
>
>
More information about the Squeak-dev
mailing list
|