我已经在ruby中写了一个类,称之为 Foo 。现在我想创建它的一些实例。但是,我想使用存储在变量中的值作为实例的名称。
例如,变量 bar 的值为“ABC”。现在我想将新实例“ABC”的名称作为语句 ABC = Foo.new
我能意识到这一点吗?如果有可能,请告诉我如何。感谢!!!
答案 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