我可以使用指定的名称创建类的实例吗?

时间:2012-05-07 05:42:27

标签: ruby class instance

我已经在ruby中写了一个类,称之为 Foo 。现在我想创建它的一些实例。但是,我想使用存储在变量中的值作为实例的名称。

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

我能意识到这一点吗?如果有可能,请告诉我如何。感谢!!!

3 个答案:

答案 0 :(得分:2)

在Ruby中,你也不应该害怕使用eval(),只要你只提供由程序员构建的数据,而不会产生不安全的外部影响。在这种情况下,

cocos = "ABC"
class_sym = :Foo
eval "#{cocos} = #{class_sym}.new"

Eval在许多语言中都有不好的声誉,但在Ruby中,它非常舒适,基本上和静态代码一样快。

答案 1 :(得分:1)

作为 local 变量,不,但您可以使用instance_variable_set和朋友将创建的对象命名为实例变量。

答案 2 :(得分:1)

如果您真的使用常量,也可以使用const_set

constant = 'ABC'
Object.const_set constant.to_sym, Foo.new