Class A is a ruby file generated from XRC via xrcise. Class B is a
child class that inherits from class A, and subsequently is where I have
my event hook-ups defined (just in case I need to generate class A from
XRC again, I don''t want the event code overwritten).
My question is about the syntax for the event hookups. Why does the
code below work the way it does?
class B < A
def initialize
super
evt_menu(@m_menuAbout) { | event | onAbout(event) } #this works
evt_menu(self.m_menuAbout) { | event | onAbout2(event) } #also works
evt_menu(@m_menuAbout) { :onAbout3 } #does not work
end
def onAbout(event)
puts ''You clicked the About menu''
end
def onAbout2(event)
puts ''You clicked the About menu''
end
def onAbout3
puts ''You would have cliked the About menu but the code
doesn''t get
here''
end
end
Kind of new to ruby, so I''m not sure why I need to include the | event
|
syntax for the event hookup. Any explainations? Thanks!
--
Posted via http://www.ruby-forum.com/.
Hi Jason On 05/02/11 13:34, Jason Knott wrote:> def initialize > super > evt_menu(@m_menuAbout) { | event | onAbout(event) } #this works > evt_menu(self.m_menuAbout) { | event | onAbout2(event) } #also works > evt_menu(@m_menuAbout) { :onAbout3 } #does not work > endLook at this code just from a general Ruby point of view. Your last example is a block / anonymous function that simply returns the symbol value :onAbout3. It is running (I''m pretty sure) but not doing anything interesting. I think what you want is evt_menu(@m_menuAbout, :onAbout3). Then the symbol is interpreted immediately by evt_menu, which takes it to mean "bind the method named "..." to the event handler". The bound method can accept an event argument, or not, as it pleases. best alex