Duda sobre funcion contains en SmallTalk
de Caliz Blanco Alejo Martin Ezequiel - Haciendo el tp1, llegan varias partes del tp (al menos para mi) donde tengo que iterar y segun el resultado de la iteracion devolver algo.
ejemplo pseudocodigo:
lista do: [:indice|
(indice = objeto obtenerAtributo) ifTrue: [ ^true.].
].
^false.
Si lo implemento asi, el tp anda sin problema alguno, el problema es cuando quiero utilizar la funcion anySatisfy o contains:
^(lista contains: (objeto obtenerAtributo)).
Con cualquiera de las dos Pharo da un error parecido a "..... did not understand #value"
Asumo que estoy escribiendo algo mal, pero no logro encontrar el qué.
Esta bien el uso de la funcion contains?
Debo hacer algo mas para que me reconozca el mensaje?
Re: Duda sobre funcion contains en SmallTalk
de SMITH ALEJANDRO NICOLAS - va con [ ] el contains
Re: Duda sobre funcion contains en SmallTalk
de YOLIS EUGENIO - Hola,
Hay un mensaje "includes" que hace algo similar a lo que vos esperabas que haga el "contains".
Proba esto en el playground:
| unaLista |
unaLista := OrderedCollection new.
unaLista add: 'uno'.
unaLista add: 'dos'.
Transcript show: (unaLista includes: 'dos').
unaLista := OrderedCollection new.
unaLista add: 'uno'.
unaLista add: 'dos'.
Transcript show: (unaLista includes: 'dos').
Por otro lado, el "contains" y el "anySatisfy" son iguales, los dos esperan un bloque de codigo que evalue una condicion, siguiendo el mismo ejemplo de playground anterior lo podrias usar asi:
Transcript show: (unaLista contains: [ :unElemento | unElemento = 'dos' ]).
PD: un comentario, en tu ejemplo haces:
lista do: [:indice|
Ojo que esa variable "indice" ahi no es un indice de la lista, sino cada elemento de la lista, seria mas claro llamarlo "unElemento" o algo similar.
Saludos
Eugenio