"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