Buenas, tengo un par de consultas, primero, cree como vimos en clase una clase con una variable:
..
Object subclass: #Coleccion
instanceVariableNames: 'numeros'
..
Luego en un metodo Initialize lo creo:
...
Initialize
"Inicializa una lista con numeros"
numeros := OrderedCollection new.
...
Pero cuando lo quiero usar en otro metodo:
...
(numeros isEmpty) ifTrue: [^0].
...
El programa tira
#isEmpty was sent to nil
Qué estoy haciendo mal?
segundo, cómo se llama el Package de OrderedCollection? Me gustaria saber los metodos que tiene.
Pude ser que el método intialize esté escrito con letra "I" en lugar de "i"?
Lo puse con ' i ', y ahora me tira:
Inconsistent method classification
--
All methods should be put into a protocol (method category) that is equivalent to the one of the superclass, which is a Smalltalk style convention.
--
no estoy seguro de que quiere decir(estan todos en la categoria TP0, adentro de la clase Collection), cuando pongo Do it en el playground ahora pharo no hace nada.
Alguna idea?
Hola Alejo:
El mensaje que te aparece ahora es simplemente una recomendación de Pharo pero que no impide el correcto funcionamiento de tu solución.
Fijate que el System Browser está dividido en cuatro columnas:
- Paquetes: Acá es donde figura la carpetita tuya del TP0
- Clases: Acá van las clases incluidas en el paquete seleccionado.
- Protocolos: Son las categorías de los métodos. Son opcionales y sirven simplemente para agrupar los métodos dentro de una clase para encontrarlos más fácilmente. Es algo útil cuando una clase entiende muchos mensajes, pero para el TP0 no es necesario que se preocupen por ello.
- Mensajes: Los mensajes que entiende la clase seleccionada.
Habiendo declarado el mensaje initialize
(con minúscula) ya se solucionó tu problema original (te tiene que haber aparecido un trianguilito verde a la izquierda del nombre del método).
No te olvides de abrir el Transcript aparte para poder ver el resultado de la ejecución de las pruebas (si no no verás nada cuando hagas "Do it").
Saludos,
Tomás
Muchas gracias, todo solucionado! (el tp no dice nada hasta el final si las cosas estan saliendo bien)