2012-05-07 239 views
1

我已经在Ruby中写了一个类,称之为。现在我想创建它的一些实例。但是,我想使用存储在变量中的值作为实例的名称。我可以使用指定名称创建类的实例吗?

例如,可变的值是“ABC”。现在我想将新实例“ABC”的名称作为语句ABC = Foo.new

我可以认识到这一点吗?如果可能的话,请告诉我如何。谢谢!!!

回答

2

在Ruby中,你也应该不害怕使用eval(),只要你给它只能通过数据你,程序员构建,没有不安全的外部影响。在这种情况下,Eval在很多语言中声誉不佳,但在Ruby中,它非常舒适,基本上和静态代码一样快。

+0

非常感谢你。它确实有很大的帮助。 – fabregaszy

+0

我知道它的确如此。 #eval是一把锤子,你学习特别是那些之前较弱,因此更安全的方式,例如在这种情况下self.class.const_set(:ABC,self.class.const_get(:富)。新):))) –

1

您也可以使用const_set如果你真的与常数工作:

constant = 'ABC' 
Object.const_set constant.to_sym, Foo.new 
相关问题