如何根據方法的名稱動態調用方法?當方法的名稱包含在字符串變量中時,如何動態調用它?例如: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 關注
- 796 瀏覽
添加回答
舉報
0/150
提交
取消