用函数变换变量(Ruby初学者)

时间:2011-11-01 10:21:51

标签: ruby-on-rails ruby ruby-on-rails-3

如何在Ruby中完成变异:

row = row.to_hash

我尝试过 row.to_hash!

但它不起作用。

编辑:这是它所在的代码:

    CSV.foreach('stores.csv', :headers => true) do |row|
      row = row.to_hash
    end

2 个答案:

答案 0 :(得分:2)

除非我误解了您的问题,否则您可以尝试:

rows = []
CSV.foreach('stores.csv', :headers => true) do |row|
  rows << row.to_hash
end

它实际上不是变异,但它确实为您提供了您似乎正在寻找的输出。使用单独的方法执行新输出的操作与更改数据的原因之一是,通常,将输入数据设置为不可变是更明智的。从CSV文件中读取可能不完全适合这种范例(原始输入在某个文件中),这可能就是为什么没有! to_hash的版本。

在上面的代码中,您可以选择处理哈希并将结果放在您想要的位置(如果输入文件非常庞大)以节省空间,而不是仅将所有哈希值推入数组然后处理该数组。

答案 1 :(得分:-1)

我们实际上不能说是否有这样的方法。但如果你得到一个NoMethodError,最有可能没有一个。 :)