-1

我有一个.csv,我从中读取并解析以创建一个类的实例,我想在.csv 中第一行返回的文本字符串之后命名该类。我可以手动创建类,但想读取 row[0] 并在此之后命名变量。

例如。

CSV.foreach("banks.csv", :headers => true) do |row|

    ***contents of row[0]*** = Bank.new(row[0], row[1], row[2], row[3], row[4])

例如,row[0] == "Bank_of_America",所以我希望代码等同于以下内容;

    Bank_of_America = Bank.new(row[0], row[1], row[2], row[3], row[4])

我已经使用 instance_variable_set 阅读了一些关于类似主题的其他回复,但无法让给出的代码正常工作。

提前感谢您的任何建议!

编辑:以下工作;

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

1 回答 1

1

你可以做这样的事情并动态创建一个实例变量:

x = 10
 # => 10
instance_variable_set("@the_number_#{x}", x)
 # => 10
@the_number_10
 # => 10

你可以"@the_number_#{x}"row[0]现在替换。

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

于 2013-10-08T19:10:40.200 回答