1

オブジェクトobjのメソッドのリストを動的に呼び出す必要があります。メソッドオブジェクトをインスタンス化してから呼び出しようとしています。

method_name(文字列)は、オブジェクトobjで呼び出すことができるメソッドの名前です。

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

次のエラーが発生します。

#の未定義メソッド `call ='(NoMethodError)

Sequel ORMを使用しており、モデルの関連付けを動的に保存する必要があります。method_nameを直接呼び出すと(method_nameが文字列でない場合)、次のように機能します

obj.method_name = mod #working

ただし、me​​thod_nameが文字列の場合、次のように構文エラーが発生します。

obj.send(method_name) = mod #not working

構文エラー、予期しない'='、keyword_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, ...)

[参照]

(呼び出しの後に置かないでください=。コンマで区切られた引数をリストするだけです)

Ingenu方法も、同様のことを行う良い方法 (おそらくより良い方法) です。

于 2012-02-27T10:20:55.230 に答える