Ruby字符串到方法名称错误:未定义的方法`call=';对于#<;方法:0xa396aac>;(命名者)
我必须动态调用对象obj上的方法列表。 我试图实例化一个方法对象,然后调用它 method_name(字符串)是可以在对象obj上调用的方法的名称Ruby字符串到方法名称错误:未定义的方法`call=';对于#<;方法:0xa396aac>;(命名者),ruby,sequel,Ruby,Sequel,我必须动态调用对象obj上的方法列表。 我试图实例化一个方法对象,然后调用它 method_name(字符串)是可以在对象obj上调用的方法的名称 meth=obj.method(method_name) #method_name is a string meth.call = mod 我得到以下错误: #(NoMethodError)的未定义方法'call=' 我正在使用Sequel ORM,必须动态保存模型关联。 如果我直接调用方法\u name(当方法\u name不是字符串时),那么下
meth=obj.method(method_name) #method_name is a string
meth.call = mod
我得到以下错误:
#(NoMethodError)的未定义方法'call='
我正在使用Sequel ORM,必须动态保存模型关联。
如果我直接调用方法\u name(当方法\u name不是字符串时),那么下面的代码可以正常工作
obj.method_name = mod #working
但是,当method_name是字符串时,下面给出了一个语法错误:
obj.send(method_name) = mod #not working
语法错误,意外的“=”,应为关键字\u end
因此,我无法使用上述任何一种方法从名称中以字符串形式调用方法。如果名为
method\u name
的方法使用mod
参数,请尝试:
obj.send(method_name, mod)
如果您正在分配内容,则
方法\u name
应以=
结尾调用的正确语法为
call(args, ...)
[]
(不要在调用后放置=
,只需列出用逗号分隔的参数)
同样,这种方法也是做类似事情的好方法(可能更好)。可能与