如何根据方法的名称动态调用方法?当方法的名称包含在字符串变量中时,如何动态调用它?例如:class MyClass
def foo; end
def bar; endendobj = MyClass.new
str = get_data_from_user # e.g. `gets`, `params`, DB access, etc.str #=> "foo"# somehow call `foo` on `obj` using the value in `str`.我该怎么做?这样做会带来安全风险吗?
3 回答
泛舟湖上清波郎朗
TA贡献1818条经验 获得超3个赞
public_send
:
method_name = 'foobar'obj.public_send(method_name) if obj.respond_to? method_name
send
public_send
.
method_name
if obj.respond_to?(method_name) && %w[foo bar].include?(method_name) obj.send(method_name)end
- 3 回答
- 0 关注
- 761 浏览
添加回答
举报
0/150
提交
取消