[etoys-dev] SQ-903 - Object displayed name does not always match name used to refer to object in scripts
scott.wallace at squeakland.org
Sat Mar 26 16:34:04 EDT 2011
On Mar 26, 2011, at 11:01 AM, Ricardo Moran wrote:
> foundPlayer := ActiveWorld presenter reallyAllExtantPlayersNoSort
> detect: [:p |(p costume externalName = 'Cat') and: [p costume isInWorld]]
> ifNone: [nil].
> foundPlayer ifNotNil:
> [ <proceed to do something to or with foundPlayer...> ]
> Wouldn't that be equivalent to my script?
> (World findDeepSubmorphThat: [:each | each player externalName = aString] ifAbsent: ) player
Yes, you're right. Sorry that I'd lost sight of the earlier history of this thread...
However, the "player" of most morphs is nil, so "each player externalName" will often generate an error. Instead, since it's really the morph and not the player that bears the "externalName" anyway, a bulletproofed improvement might be:
foundMorph := World findDeepSubmorphThat: [:each | (each externalName = aString) and: [each player notNil]] ifAbsent: [nil].
[foundPlayer := foundMorph player.
< proceed to do something to or with foundPlayer...> ]
More information about the etoys-dev