、私は動的に格納されている文字列(例えば:"ModuleName::Submodule:methodName"
)としてメソッド名を持つ、モジュールに属しているメソッドを呼び出す必要がありダイナミックディスパッチ(メソッドがモジュールの一部である場合)のメソッドをRubyで呼び出す方法は?
のは、このような場合を考えてみましょう:
module Dialogs
def paperino(param)
puts "paperino. param: #{param}"
end
end
どのようにすることができます実行時に.call( "parametro")を実行しますか?
私はより良い説明:メソッドの場合
は私が行う方法を知っているクラスの一部です: 私は(文字列から、私はメソッドオブジェクトを呼び出す)クラスをインスタンス化:
class Dialogo
def pluto(param)
puts "pluto. param: #{param}"
end
end
class_name = "Dialogo"
# create class symbol from a string
class_symbol = Kernel.const_get(class_name)
# return a new instance
class_instance = class_symbol.new
# Instantiating a method object
method_object = class_instance.method(:pluto)
# call the method in run time:
method_object.call "parametro_pluto"
と明示的なクラスのない方法の簡素状況
def pippo(param)
puts "pippo. param: #{param}"
end
method_object = Kernel.method(:pippo)
method_object.call "parametro"
しかし、動的モジュールの一部であるメソッドを呼び出すための構文は何ですか?
次の例では:
module Dialogs
def paperino(param)
puts "paperino. param: #{param}"
end
end
私が呼び出したいメソッドは、 "ダイアログ:: paperino"
ところで、私はどちらも使用しない(送信しない)やeval(あります) 、しかしちょうどコール()。
おかげ ジョルジオ
このような方法は呼び出されることを意味しません。モジュールをどこかに入れるか、http://apidock.com/ruby/Module/module_function –