如何在Ruby中完成变异:
row = row.to_hash
我尝试过 row.to_hash!
但它不起作用。
编辑:这是它所在的代码:
CSV.foreach('stores.csv', :headers => true) do |row|
row = row.to_hash
end
答案 0 :(得分:2)
除非我误解了您的问题,否则您可以尝试:
rows = []
CSV.foreach('stores.csv', :headers => true) do |row|
rows << row.to_hash
end
它实际上不是变异,但它确实为您提供了您似乎正在寻找的输出。使用单独的方法执行新输出的操作与更改数据的原因之一是,通常,将输入数据设置为不可变是更明智的。从CSV文件中读取可能不完全适合这种范例(原始输入在某个文件中),这可能就是为什么没有! to_hash的版本。
在上面的代码中,您可以选择处理哈希并将结果放在您想要的位置(如果输入文件非常庞大)以节省空间,而不是仅将所有哈希值推入数组然后处理该数组。
答案 1 :(得分:-1)
我们实际上不能说是否有这样的方法。但如果你得到一个NoMethodError
,最有可能没有一个。 :)