1

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

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

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

4

3 回答 3

2

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

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

Eval 在许多语言中名声不佳,但在 Ruby 中,它相当舒适,基本上与静态代码一样快。

于 2012-05-07T06:08:00.887 回答
1

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

于 2012-05-07T05:55:58.830 回答
1

const_set如果你真的在使用常量,你也可以使用:

constant = 'ABC'
Object.const_set constant.to_sym, Foo.new
于 2012-05-07T14:23:06.703 回答