【发布时间】:2011-04-21 08:08:17
【问题描述】:
我有一个 CSV 文件,我正在对其进行解析并将其部分插入数据库中。我想编写一个解析器,它考虑到列顺序将来可能会改变的事实。
我认为我可以通过将标题行作为一个数组抓取来做到这一点,并且对于每一行,将值放入动态创建的局部变量中(使用 eval)。但是,这似乎不起作用,因为局部变量似乎无法在 eval 之外访问。我在其他地方读到这在 ruby 1.9 中可能是正确的,但我使用的是 1.8.7
代码如:
headers = ["a", "b"]
headers.each do |h|
p e_str = h+"=1"
eval(e_str)
end
puts a
根本行不通,给
test.rb:6: 未定义的局部变量或 main:Object 的方法 `a' (NameError)
虽然第 3 行按预期打印“a=1”和“b=1”
有人知道我该怎么做吗?
【问题讨论】:
-
不要那样做。改用方法(参见 OpenStruct)。