取String(例如“Car”)并将其转换为Ruby中的Class

时间:2016-03-19 22:10:48

标签: ruby metaprogramming

我有一个我要调用的类的字符串表示形式。该课程已经存在。

klass = "Broseph"
Class.new(Broseph)
# => #<Class:0x007f9f0c1cc8b8>
Class.new("Broseph")
# => TypeError: superclass must be a Class (String given)

如何将字符串转换为类?如何在我表示为字符串的类上调用类方法?我还需要将参数传递给该类方法。

1 个答案:

答案 0 :(得分:2)

您可以使用const_get

klazz = Object.const_get('Broseph')

然后在klazz上调用方法,如:

klazz.some_method # when you know the method is fixed
klazz.send('some_method') # when the method also is stored in a string