[etoys-dev] SQ-903 - Object displayed name does not always match name used to refer to object in scripts

Ricardo Moran richi.moran at gmail.com
Tue Mar 1 14:28:37 EST 2011

On Tue, Mar 1, 2011 at 3:05 PM, Steve Thomas <sthomas1 at gosargon.com> wrote:

> Ricardo,
> Thanks, actually what I need is to get the reference to the object from the
> External Name.

The problem is that two or more objects could have the same external name.
However, if you're sure only one object has a given external name you can
get its reference by implementing the following method in the class side of

withExternalName: aString
 ^ (World findDeepSubmorphThat: [:each | each player externalName = aString]
ifAbsent: []) player

And then you can get the reference from a script by sending:

(Player withExternalName: 'Texto')

I really don't know if there is a better way of doing this, but keep in mind
that my "solution" is just a hack that goes through all the morphs in the
world looking for the player with the given external name.

I hope this helps :)

> What I am trying to do is something similar to Learn Programming with
> Robots by Stephane Ducasse <http://rmod.lille.inria.fr/botsinc>.  One of
> my goals is to find a way to provide a transition for kids from Etoys to
> Squeak and for me to play around and have fun ;)   In looking a at Ducasse's
> book, I am not really sure what value it adds to kids learning other than
> showing them the textual syntax of squeak as opposed to the tile version
> (except the some of the later chapters which introduce the browser, some
> debugging with halt, etc). Also some of the textual descriptions do not seem
> as effective or likely to be used by kids as some things that might be done
> in Etoys.
> I really need to think about what for ?Computational Thinking?
> habits/experiences I want kids to have and how to create an Etoys that can
> facilitate learning them.
> I think, this will take me quite a while  (but I'm having fun ;).
> In any case
> Stephen
> On Tue, Mar 1, 2011 at 9:34 AM, Ricardo Moran <richi.moran at gmail.com>wrote:
>> Hi Steve,
>> I don't think this is a bug. If I understood correctly, the name used to
>> reference an object in a script is not supposed to be the same as the one
>> displayed on the screen but a unique name that identifies only this object
>> in the World. An object's external name can change at any time but the
>> references to this object must remain consistent in all scripts.
>> I'm not sure what you're trying to do, but you can get an object's
>> displayed name by sending #externalName to the object. See the attached
>> project for an example.
>> Cheers,
>> Richo
>> On Tue, Mar 1, 2011 at 2:51 AM, Steve Thomas <sthomas1 at gosargon.com>wrote:
>>> See: http://tracker.squeakland.org/browse/SQ-903
>>> If you change the name of an object, the name used to reference it in a
>>> script (via show code textually) does not change.
>>> So how do I reference the name of the player (as displayed on the screen)
>>> in a script?
>>> script4
>>> | t1 t2 p1 selector |
>>>  p1 := Text3.
>>> t1 := Command1 getCharacters.
>>> t2 := 5.
>>>  selector := (t1 , ':') asSymbol.
>>> p1 perform: selector with: t2
>>> In this above example I had a Text object where the screen showed its
>>> name (on page 2) as Text3, but when I used its characters tile in another
>>> Text object's script, it used the name Text4 in the text version of that
>>> script?
>>> Stephen
>>> _______________________________________________
>>> etoys-dev mailing list
>>> etoys-dev at squeakland.org
>>> http://lists.squeakland.org/mailman/listinfo/etoys-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakland.org/pipermail/etoys-dev/attachments/20110301/73f28747/attachment.html>

More information about the etoys-dev mailing list