[Seaside] Dynamic typing in smalltalk
Alexandre BP
abalonpe at ulb.ac.be
Fri Oct 29 19:11:59 UTC 2010
Great!
I didn't see John's reply but it's definitely the best way :)
Thanks a lot everyone!I'll surely come with new problems as I'm new with smalltalk Regards,Alex
Date: Fri, 29 Oct 2010 20:43:49 +0200
From: sebastian_heidbrink at yahoo.de
To: seaside at lists.squeakfoundation.org
Subject: Re: [Seaside] Dynamic typing in smalltalk
As far as I can see there's no need for your loop.
John's solution already provides you with a class in selectedType.
Eventhough it isn't quite the way to do it.
You forgot something here. Symbol new returns a Symbol:
dynamicTyping :=
('PaperBibli', selectedType) asSymbol asClass.
bibEntry := PaperBibli
perform: dynamicTyping new.
asClass isn't nice because it take some while and there are more
OO-solutions available.
Try to get away from casting. Delegation is the answer.
If you might need to keep your original Object, or, how to say
this right now, whish or need to keep on using the memory space
you could also use become: or becomeWith:
Now this is really not the nice way to do it, but it schould
also work.
yourmessage: aPaperBibli
^PaperArticle new become: aPaperBibli
Just to be mentioned...
I would use John's approch, it's the most common.
Sebastian
Am 29.10.2010 20:23, schrieb Alexandre BP:
thanks for your time,
Your second solution seems very nice I'll try it as soon as
possible.
The second one however forces me to have a big list of loops
that look like '(selectedType = 'Book') ifTrue: [var :=
PaperBibliArticle new]. '
which is neither clean nor evolutive.
I wanted to do something like:
dynamicTyping := ('PaperBibli', selectedType, ' new')
asSymbol.
bibEntry := PaperBibli perform: dynamicTyping.
OR
dynamicTyping :=
('PaperBibli', selectedType) asSymbol.
bibEntry :=
PaperBibli perform: dynamicTyping new.
--> it doesn't work unfortunately ...
OR:
As in JAVA:
PaperBibli bibEntry;
(when I need it)
bibEntry = new PaperBibliArticle;
Anyway I'll try the second solution which is more elegant.
thank you very much
alex
> Date: Fri, 29 Oct 2010 13:56:14 -0300
> From: andres at lifia.info.unlp.edu.ar
> To: seaside at lists.squeakfoundation.org
> Subject: Re: [Seaside] Dynamic typing in smalltalk
>
> Hi Alexandre,
> I guess you could try two approaches:
>
> 1. Just list the classes in a select, so that the first
step is choosing
> the entry. Once you have this you just create the
appropriate class.
>
> 2. Decouple the type of the object from the object itself
(check also
> http://www.ksc.com/article3.htm). Thus PaperBibli would
know an object
> (lets say PaperType) whose subclasses would be Book,
Article, etc. When
> the user selects the type he wants you just set the
object's type. The
> type class is the one that holds the type-specific
information.
>
> HTH,
> Andrés
>
> Alexandre BP escribió:
> > thank you for your replyI have a class named
"PaperBibli" which keeps a list of bibliographic entries.Those
entries are of different type: Article, Book,
Conference,...Every type has its own fields such as:
author,title,...
> > --> I created SubClasses of "PaperBibli" for each
type so that when I instanciate an bibliographic entry I don't
have lots of variables(fields) which are empty because not
required in a particular type.The problem is that when I
instanciate my bibliographic entry I still don't know of which
type it is because the user tell me so by choosing in a scroll
list.
> > I hope that my explanation is clear
> >
> >
> >
> > Date: Fri, 29 Oct 2010 12:24:22 -0400
> > Subject: Re: [Seaside] Dynamic typing in smalltalk
> > From: sean at monkeysnatchbanana.com
> > To: seaside at lists.squeakfoundation.org
> >
> > There are types in smalltalk. Each object has a type.
> > That aside, what are you trying to accomplish with
your example below?
> >
> > On Fri, Oct 29, 2010 at 12:13 PM, Alexandre BP
<abalonpe at ulb.ac.be> wrote:
> >
> >
> >
> >
> >
> >
> >
> > Hello,
> > I would like to know if it is possible to apply
dynamic typing in smalltalk. For example, If I want to use
polymorphism, it would be:
> > var := Class new. var := (SubClass1) message. var :=
(SubClass2) message.
> >
> > Where message from SubClass1 is different then the one
from SubClass2.Is there any solution for my problem? I know that
there is no type in smalltalk but there is definitely a way to
use polymorphism right?
> >
> > Thank you in advance,Regardsalex
> >
> > _______________________________________________
> >
> > seaside mailing list
> >
> > seaside at lists.squeakfoundation.org
> >
> >
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
> >
> >
> >
> >
> >
> > _______________________________________________
> > seaside mailing list
> > seaside at lists.squeakfoundation.org
> >
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
> >
> >
> >
------------------------------------------------------------------------
> >
> > _______________________________________________
> > seaside mailing list
> > seaside at lists.squeakfoundation.org
> >
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
>
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
_______________________________________________
seaside mailing list
seaside at lists.squeakfoundation.org
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
_______________________________________________
seaside mailing list
seaside at lists.squeakfoundation.org
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20101029/c57f7cec/attachment.htm
More information about the seaside
mailing list