Entrar
¿Nuevo usuario? Inscribirme
smalltalking · Un lugar para el estudio y desarrollo de Ambientes de Objetos virtuales.
? ¿Ya estás suscrito? Entra a Yahoo!

Consejos

¿Sabías que...?
Podés cambiar el orden de los mensajes. Simplemente hacé clic en el enlace de columna fecha. Tus preferencias se guardarán, por lo tanto no necesitarás hacerlo otra vez cuando vuelvas a entrar.

Mensajes

  Mensajes Ayuda
Avanzado
Nueva consulta Smalltalk Express   Lista de mensajes  
Responder | Reenviar Mensaje #10897 de 17191 |
Re: Nueva consulta Smalltalk Express

José,
Para enviar el mensaje debes "ejecutarlo", es decir, tenés el
nombre del mensaje, o sea el Selector. Entonces para ejecutarlo debes
hacer

objectoX perform: #selector

en tu caso sería:

?>>ordenar: aString (Del modelo)

| message |
message := aString asSymbol.
clientes sortBlock: [ :a :b | (a perform: message) <= (b perform:
message) ].

Como verás en message tenés una expressión del estilo
#nombre.
Como sabrás evaluar en un workspace ObjectoX #nombre te dará un
error
del tipo "Should be selector" o algo asi.
Hay un par de vias para enviar un mensaje teniendo el selector como
string.

1 - La menos prolija para tu codigo es haciendo:
Compiler evaluate: 'objetoX ', message

2 - La otra es convirtiendo el string en symbol y ejecutando el
mensaje en cuestion:
objectoX perform: message asSymbol

Como dijistes que estás apurado para presentar este proyecto
quizás no
le des mucha bola a lo que diga ahora, pero es interesante para que
vayas teniendolo en cuenta para futuros trabajos ;)

- Intentá mantener la semántica del ambiente, es decir, en
inglés los
comentarios y los mensajes. Calculá que tener todo en una misma
semántica es más fácil leer y tu código lo vas a
leer/leeran muchas
veces el día que intentes/intenten mantenerlo/modificarlo.

- La notación es ObjectoX>>mensajeX, con lo cual es prolijo para
el
que lee saber a quien pertenece ese mensaje que estás describiendo.

- Cuando envies, como en este caso para ordenar, selectores por
parametro, es mejor que lo envies como symbol al parametro, pues son
más apropiados. Recordá que 'hola' == 'hola' es falso y en
cambio
#hola == #hola es verdadero.

Saludos,
Hernán.-

--- En smalltalking@..., kikote gregoris
<kikogregoris@y...> escribió:
> Hola amigos
>
> Tengo el siguiente problema : tengo un SortedCollection con
clientes
ordenada por nombre ,
> en la interfase hay un ComboBox con tres items (Nombre, Dni ,
Dirección) y un par de EntryField para mostrar los datos del
cliente .
En le evento select del ComboBox puse un método ordenar , al
seleccionar un items se lo envió a el método "ordenar:aString "
del
modelo el cual realiza lo siguiente.
>
>
> >>ordenar:aString (Del modelo)
>
> |message|
>
> message:=aString asMessage.
> clientes sortBlock:[:a :b | a message <= b message].
>
>
> El problema es que el mensaje "asMessage" transforma a aString en
un
symbol no en un mensaje.
> Esto lo hice para evitar los " if " ya que me paresia una forma mas
elegante de resolver el problema.
> Quisiera saber si alguien sabe que es lo que esta mal
>
> Saludos José
>
>
>
>
>
>
>
> ---------------------------------
> ¿Buscás un auto?
> Encontralo en Yahoo! Autos
> ¡Más de 4000 clasificados todos los días!
> Usados - 0 km - Vendé el tuyo




Mar, 3 de Feb, 2004 11:36 am

hernan_galante
Sin conexión Sin conexión
Enviar correo Enviar correo

Reenviar Mensaje #10897 de 17191 |
Desplegar mensajes Autor Ordenar por fecha

Hola amigos Tengo el siguiente problema : tengo un SortedCollection con clientes ordenada por nombre , en la interfase hay un ComboBox con tres items (Nombre,...
kikote gregoris
kikogregoris
Sin conexión Enviar correo
3 de Feb, 2004
11:15 am

José, Para enviar el mensaje debes "ejecutarlo", es decir, tenés el nombre del mensaje, o sea el Selector. Entonces para ejecutarlo debes hacer objectoX...
Hernán Galante
hernan_galante
Sin conexión Enviar correo
3 de Feb, 2004
11:36 am
Avanzado

Copyright © 2009 Yahoo! de Argentina S.R.L. Todos los derechos reservados.
Política de privacidad - Condiciones del Servicio - Reglas de la comunidad de Yahoo! - Ayuda