给出以下代码结构......
module Foo
module Bar
class A
end
end
class B
def initialize(stuff)
...
end
end
end
如何从A类中调用B的.new
方法?
并且,有没有办法动态地执行它,如果我有一个字符串是我想要访问的类名?
答案 0 :(得分:1)
module Foo
module Bar
class A
end
end
class B
def initialize(stuff)
puts "I like #{stuff}"
end
end
end
从您可以调用的任何地方:
include Foo
klass = "B"
Module.const_get(klass).send(:new, "cats")
#=> "I like cats"
答案 1 :(得分:0)
这就是你静态称呼的方式:
module Foo
class B
def initialize(stuff)
end
end
module Bar
class A
puts Foo::B.new(1)
end
end
end
要动态调用它,请检查@CarySwoveland的答案。您将需要使用const_get和send方法。