On Wed, Oct 24, 2012 at 7:44 PM, Todd Benson <[email protected]> wrote:
> I'm writing a simple script and need to shoot off methods based on
> user input via ARGV. I'm trying to avoid the if, elseif chain, so
> right now I'm using send...
>
> h = {
>  "a" => :add,
>  "d" => :display
> #etc
> }
> #other code
> my_obj.send(h[user_input], parameters)
>
> I'm just wondering if there is a more common practice for this sort of thing.

Another approach would be to replace the symbols in the Hash by
lambdas and invoke them.

h= {
  "a" => lambda {|p1, p2, p3| ...},
  "d" => lambda {|p1, p2, p3| ...},
}

h[user_input][parameters]
h[user_input].call(parameters)

Note though that in this case the object is missing.  You could
include that in the closures though.

Kind regards

robert

-- 
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

-- You received this message because you are subscribed to the Google Groups 
ruby-talk-google group. To post to this group, send email to 
[email protected]. To unsubscribe from this group, send email 
to [email protected]. For more options, visit this 
group at https://groups.google.com/d/forum/ruby-talk-google?hl=en

Reply via email to