如何使用方法名作为参数

时间:2017-01-16 10:57:22

标签: ruby

我有这样的方法

def foo(method_name)
  bars.find{|bar| bar.method_name }
end

参数method_name是一个符号,方法method_name返回布尔值。

我可以使用&:编写此方法吗? 我想这样写:

bars.find("&:#{method_name}")

但它不起作用。

1 个答案:

答案 0 :(得分:0)

def foo(method_name)
  method_sym = method_name.to_sym
  bars.find(&method_sym)
end

# one line
def foo(method_name)
  bars.find(&method_name.to_sym)
end

def foo(method_name)
  bars.find{|bar| bar.public_send(method_name)}
end