0
修改阵列我有以下:ruby .map!或每一个用于代替
article_results.keys do |key|
article_results[key].map! do |a|
a[:filename] = c.filename
a[:sitename] = c.site_name
a
end
end
正如我想要动态地添加到哈希内的每个阵列的每个元件,但由于某些原因a[:filename]
和a[:sitename]
是空白时,他们用过的。
所以我想知道如果我应该使用.each
来代替。 另外我想我想知道主要区别是什么,因为它们都可以用于副作用。
我添加了这个作为额外的fyi,我使用的是Ruby 1.8.7,所以很高兴知道它在版本(1.8.7 - 1.9+)之间的差异。
P.s.我知道.each
和.map
之间有什么区别,我特别要问的是.map!
。
我总是忘记有1.8.7之间的差异(这我目前被迫使用)和1.9+,我将其添加到操作中。减少看起来像注入,是同样的事情?另外,article_results是一个散列哈希的对象数组哈希像setter&getters来添加额外的数据。 – Thermatix
正确,reduce是别名注入(反之亦然)。这只是一个连贯命名的问题 - 地图随着减少,注入去与收集。从你的问题中的代码看起来像'artice_results'是哈希散列(或行为像散列的对象),所以'合并!'应该对它们起作用。如果没有 - 直接使用'[] ='。 – keymone
实际上,如果'article_results'是数组的散列,那么你的'map!'代码是正确的,你应该确保'c.filename'是有效的。和''.keys'不占用一个块,必须是'.keys.each' – keymone