Ruby-基于从.csv读取的字符串动态命名的变量

Ruby-基于从.csv读取的字符串动态命名的变量,ruby,csv,Ruby,Csv,我有一个.csv,我从中读取并解析它来创建一个类的实例,我想用从.csv第一行返回的文本字符串来命名这个类。 我可以手动创建这些类,但需要读取第[0]行并在其后命名变量 例如 行[0]==“美国银行”为例,因此我希望代码等效于以下内容: Bank_of_America = Bank.new(row[0], row[1], row[2], row[3], row[4]) 我已经阅读了一些关于使用实例变量集的类似主题的其他回复,但无法获得用于工作的代码 提前感谢您的建议 编辑:以下内容已完

我有一个.csv,我从中读取并解析它来创建一个类的实例,我想用从.csv第一行返回的文本字符串来命名这个类。 我可以手动创建这些类,但需要读取第[0]行并在其后命名变量

例如

行[0]==“美国银行”为例,因此我希望代码等效于以下内容:

    Bank_of_America = Bank.new(row[0], row[1], row[2], row[3], row[4])
我已经阅读了一些关于使用实例变量集的类似主题的其他回复,但无法获得用于工作的代码

提前感谢您的建议

编辑:以下内容已完成

instance_variable_set("@#{row[0]}", Bank.new(row[0], row[1], row[2], row[3], row[4]))

您可以执行以下操作并动态创建实例变量:

x = 10
 # => 10
instance_variable_set("@the_number_#{x}", x)
 # => 10
@the_number_10
 # => 10
您现在可以用
行[0]
替换
“@the_number_35;{x}”


编辑:对不起,我没有阅读您关于实例变量的问题的最后部分。那么,你说你不能让他们工作是什么意思?它是否出现了某种异常,或者只是没有设置正确的值。请给出不起作用的代码。

我可以问一下,为什么要将每个
Bank
设置为变量?您是否考虑过创建一个散列并将所有
Bank
s存储在其中?您将如何在其他地方引用这些银行实例?是的,另一个.csv按名称引用银行,因此字符串将为“Bank_of_America”。要识别我要在此处创建的现有银行实例,请评估。不允许将“Bank_of_America”作为实例变量名(名称错误)抱歉,已尝试粘贴代码,但无法使代码块格式正常工作。这是因为您需要在试图定义的变量前面添加一个
@
符号,就像我的示例中那样(很容易错过)。因此,您可以编写类似于
实例变量集(@#{row[0]}),x)
。你熟悉字符串插值吗?对不起,不太熟悉,我在上面查了一下,以便自己弄清楚。代码现在正在创建类的实例,但不是以[0]行的内容命名的,至少不是以我可以通过名称引用它们的方式,如果我使用ObjectSpace,我可以打印它们。每个显示它们至少存在的对象(库)。我将不得不设法找到一种方法,看看他们发生了什么,或者他们被命名为什么,因为我无法打印它们。感谢你们迄今为止的帮助,我比以前走得更远了。这是一个范围问题,它似乎在工作,否则,我可以继续从这里,非常感谢拉法。不幸的是,我的代表太低,无法给你+1抱歉!没问题@sam,很高兴能帮上忙!
x = 10
 # => 10
instance_variable_set("@the_number_#{x}", x)
 # => 10
@the_number_10
 # => 10