Is it possible to call methods that require block inputs dynamically
without resorting to “eval”? For example, consider:
a = [1,2,3]
a.detect{|x| x > 2}
I want to know if it’s possible to do something like the following (this
doesn’t work):
a.send(:detect, {|x| x > 2})
I’m using Ruby 1.8.6
Thanks…
Barun S. wrote:
I’m using Ruby 1.8.6
Thanks…
Just pass the block to the send method as you normally would pass a
block:
a.send(:detect, &proc {|x| x > 2})
=> 3
a.send(:detect) {|x| x > 2}
=> 3
Ah, right I forgot the ampersand. I needed to be able to define the
block separately from the send call, so I tried this:
cond = Proc.new {|x| x > 2}
a.send(:detect, cond)
but I needed that second line to be
a.send(:detect, &cond)
thanks!
Joel VanderWerf wrote:
Barun S. wrote:
I’m using Ruby 1.8.6
Thanks…
Just pass the block to the send method as you normally would pass a
block:
a.send(:detect, &proc {|x| x > 2})
=> 3
a.send(:detect) {|x| x > 2}
=> 3