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