与函数(Ruby的初学者)突变可变
如何突变红宝石做了这一点:与函数(Ruby的初学者)突变可变
row = row.to_hash
我已经试过row.to_hash!
但它不起作用。
编辑:这里是它的代码:
CSV.foreach('stores.csv', :headers => true) do |row|
row = row.to_hash
end
除非我误解你的问题,你可以尝试:
rows = []
CSV.foreach('stores.csv', :headers => true) do |row|
rows << row.to_hash
end
它实际上不是突变,但它确实给你,你似乎在寻找的输出。使用单独的方法执行新输出操作与更改现有数据的原因之一是,通常情况下,让输入数据不可变是明智的。从CSV文件中读取可能并不适合这个范例(原始输入在某个文件中),这可能是为什么没有!版本的to_hash。
(可选)在我上面的代码中,你可以只处理哈希,并把结果放在你想要的地方,如果输入文件是巨大的以节省空间,而不是将所有的哈希放入数组,然后处理该数组。
实际上,我们不能说,如果有这样的方法。但是如果你得到NoMethodError
,那很可能没有一个。 :)
这确实是一个rails功能。 [这里](https://github.com/rails/rails/blob/4c30304e159b2a8fafb5b3c5c8b6d996e490e657/activerecord/lib/active_record/result.rb#L23) – Hopstream
那么,这是'FlashHash'类。我不认为你在使用那个。 – tbuehlmann
ActiveRecord .. https://github.com/rails/rails/blob/4c30304e159b2a8fafb5b3c5c8b6d996e490e657/activerecord/lib/active_record/result.rb#L23 – Hopstream
这是不是已经够短了?国家就地突变可能不值得大约4个字符保存打字。 –
你的问题相当不清楚。哪一类是行的成员?你想要达到什么目的?如果您可以给出行的示例值,然后解释您希望生成的哈希的外观如何,这将有所帮助。此外,像这样变化变量类型通常会影响代码的易读性和可维护性;无论如何,将散列分配给新变量可能会更好。 –
@AdamSpiers:更新了示例代码。 – Hopstream