[Seaside] Changing object class
Bert Freudenberg
bert at freudenbergs.de
Wed Oct 3 13:04:31 UTC 2007
There is #as: which copies all instance variables of the same name as
well as indexed variables to a new class. So you could say
numericRow := RowNumeric new.
...
totalRow := numericRow as: RowTotal.
As Sebastian wrote, this does not change the identity, you will have
both the numericRow and totalRow objects afterwards.
Instead, you could really change the original row's identity:
row := RowNumeric new.
...
row becomeForward: (row as: RowTotal).
And as others have noted the need for doing this is a sign of bad
design. Sometimes It's handy to be able to do this nonetheless ;)
- Bert -
On Oct 3, 2007, at 14:24 , Sebastian Sastre wrote:
> Smalltalkish how we function so..
>
> First of all it's really rare to have a real need of changing one
> object in
> place of another so I'll convice myself about other simpler options
> like
> instantiation.
>
> Do you need to preserve identity of the objects or data is enough?
>
> If data is enough you can make:
>
> SomeThing>>asOtherThing
>
> ^ OtherThing fromSomeThing: self
>
>
> OtherThing class>>fromSomeThing: aSomeThing
>
> ^ self new
> prop1: aSomeThing prop1;
> prop2: aSomeThing prop2;
> ...
> yourself
>
> that is enough?
>
> Sebastian Sastre
> PS: if identity is a must then you should investigate the #become:
> message
>
>
>> -----Mensaje original-----
>> De: seaside-bounces at lists.squeakfoundation.org
>> [mailto:seaside-bounces at lists.squeakfoundation.org] En nombre
>> de Oleg Richards
>> Enviado el: Miércoles, 03 de Octubre de 2007 05:38
>> Para: seaside at lists.squeakfoundation.org
>> Asunto: [Seaside] Changing object class
>>
>> Hello Guys!
>>
>> Following question (maybe its a little bit "smalltalkish"):
>> I have an object - an instance of RowNumeric class. I also
>> have 2 classes derived from this class. Can i change instance
>> class from one derived to another without touching instance
>> variables.
>>
>> So i have RowNumeric with all needed variables. And now i
>> want to convert some numeric rows to total ones.
>>
>> Cheers, Oleg
More information about the Seaside
mailing list