我已经在Ruby中写了一个类,称之为富。现在我想创建它的一些实例。但是,我想使用存储在变量中的值作为实例的名称。我可以使用指定名称创建类的实例吗?
例如,可变杆的值是“ABC”。现在我想将新实例“ABC”的名称作为语句ABC = Foo.new
我可以认识到这一点吗?如果可能的话,请告诉我如何。谢谢!!!
我已经在Ruby中写了一个类,称之为富。现在我想创建它的一些实例。但是,我想使用存储在变量中的值作为实例的名称。我可以使用指定名称创建类的实例吗?
例如,可变杆的值是“ABC”。现在我想将新实例“ABC”的名称作为语句ABC = Foo.new
我可以认识到这一点吗?如果可能的话,请告诉我如何。谢谢!!!
在Ruby中,你也应该不害怕使用eval(),只要你给它只能通过数据你,程序员构建,没有不安全的外部影响。在这种情况下,Eval在很多语言中声誉不佳,但在Ruby中,它非常舒适,基本上和静态代码一样快。
作为本地变量,不,但您可以使用instance_variable_set和朋友将创建的对象命名为实例变量。
您也可以使用const_set
如果你真的与常数工作:
constant = 'ABC'
Object.const_set constant.to_sym, Foo.new
非常感谢你。它确实有很大的帮助。 – fabregaszy
我知道它的确如此。 #eval是一把锤子,你学习特别是那些之前较弱,因此更安全的方式,例如在这种情况下self.class.const_set(:ABC,self.class.const_get(:富)。新):))) –