我需要做那样的事情
class Foo
define perform()
puts 'hello'
end
end
classname = 'Foo'
instance = create_instance(classname)
instance.perform();
这样的事情是可能的。如果是如何?
非常感谢!
答案 0 :(得分:5)
您可以使用const_get
:
instance = Object.const_get(classname).new
instance.perform
答案 1 :(得分:2)
是的,有可能 -
class Foo
def perform
puts 'hello'
end
end
f = 'Foo'
klass = Object.const_get f
f.new.perform
答案 2 :(得分:2)
您可以使用Module#const_get
klass = Object.const_get(classname)
instance = klass.new
但是如果它来自用户输入,您可能希望首先将类名列入白名单。否则你可能会打开一个安全漏洞。