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