[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: RE: object methods as first class values
- From: Ignacio Castaño <castanyo@...>
- Date: Fri, 29 Nov 2002 03:51:03 +0100 (CET)
Nick Trout wrote:
> > ok = Button()
> > ok.onClick.add( exit )
>
> Just add a closure as a handler:
>
> ok.onClick.add( function() app:exit() end )
>
> And if you need to bind any parameters you just put them in your
> closure?
>
> ok.onClick.add( function() local s=0 app:exit(s) end )
yes, of course, I know there are other ways of doing the same thing, but
simply using app:exit was in my opinion 'cleaner'.
ok.onClick.add( app.exit, app )
still looks much more attractive to me.
app:connect( 'exit', ok.onClick )
would be an alternative...
> Or, instead of adding a function handler couldn?t you replace the
> default onClick function?
>
> ok.onClick = function() exit() end
>
> or
>
> ok.onClick = function() app:exit() end
yes, you can, but the idea was that onClick is a signal (or an event in c#
notation) and you can bind any number of slots (or eventHandlers) to it
dynamically. When the signal is triggered:
ok:onClick()
the list of bound methods is travelled and each one is called with something
like this:
obj:method( ok, ... )
or when obj is nil, just:
method( ok, ... )
Ignacio Castaño
castanyo@yahoo.es
_______________________________________________________________
Yahoo! Messenger
Nueva versión: Webcam, voz, y mucho más ¡Gratis!
Descárgalo ya desde http://messenger.yahoo.es