给定以下代码结构…
module Foo
module Bar
class A
end
end
class B
def initialize(stuff)
...
end
end
end
如何从类A中调用B的.new
方法?
并且,是否有一种方法可以动态地做到这一点,如果我有一个字符串,是我想要访问的类名?
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"
静态调用方式:
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方法。