"Mark Sparshatt" <msparshatt / yahoo.co.uk> schrieb im Newsbeitrag news:20050205172919.63235.qmail / web53106.mail.yahoo.com... > --- Edgardo Hames <ehames / gmail.com> wrote: >> I'm back writing my small network app (IM client) >> and I need to >> dispatch functions based on the messages received >> from the server. For >> example, if my app gets a string like >> >> MSG msg_number som_other_text >> >> it should call the function process_MSG and pass >> some_other_text as an argument. >> >> How can I do that? I was thinking of a big case >> statement, but I'm not >> sure that's the Ruby Way. Probably a hash with MSGs >> as keys and >> process_MSGs as values? >> > > You could try using the send method > > class MyClass > def process_MSG(val) > #do something > end > end > > if you've split the message up into the variables msg, > msg_number, other_text then you'd just need to do > > processor = MyClass.new > processor.send("process_#{msg), other_text) > > HTH We can even wrap that: class MyClass def process_MSG(val) ... end def receive(line) if /\A(\S+)\s+\d+\s+(.*)\Z/ =~ line send($1,$2) end end end Kind regards robert