1

我必须在对象 obj 上动态调用方法列表。我正在尝试实例化一个方法对象,然后调用它。

method_name(字符串)是可以在对象 obj 上调用的方法的名称。

meth=obj.method(method_name) #method_name is a string
meth.call = mod

我收到以下错误:

# (NoMethodError) 的未定义方法 `call='

我正在使用 Sequel ORM 并且必须动态保存模型关联。如果我直接调用 method_name (当 method_name 不是字符串时),则以下工作

obj.method_name = mod #working

然而,当 method_name 是一个字符串时,下面给出了一个语法错误:

obj.send(method_name) = mod #not working

语法错误,意外的 '=',需要关键字 end

因此,我无法使用上述任何一种方式以字符串形式从它们的名称中调用方法。

4

2 回答 2

3

如果命名的方法method_name带有mod参数,请尝试:

obj.send(method_name, mod)

如果您要分配某些内容,method_name则应以=.

于 2012-02-27T09:20:53.083 回答
0

的正确语法call

call(args, ...)

[参考]

(不要放在=call后,只列出以逗号分隔的argumentmnts)

Ingenu方法也是做类似事情的好方法(可能更好)。

于 2012-02-27T10:20:55.230 回答