我在我的哈希以下鍵:如何爲散列中的每個鍵添加前綴?
address, postcode
我要了「shipping_」前綴添加到每個人,這樣他們就變成:
shipping_address, shipping_postcode
代替。我怎樣才能做到這一點?
我在我的哈希以下鍵:如何爲散列中的每個鍵添加前綴?
address, postcode
我要了「shipping_」前綴添加到每個人,這樣他們就變成:
shipping_address, shipping_postcode
代替。我怎樣才能做到這一點?
hsh1 = {'address' => "foo", 'postcode' => "bar"}
hsh2 = Hash[hsh1.map{|k,v| [k.dup.prepend("shipping_"),v]}]
p hsh2
# >> {"shipping_address"=>"foo", "shipping_postcode"=>"bar"}
更新
hsh1 = {'address' => "foo", 'postcode' => "bar"}
hsh2 = Hash[hsh1.map{|k,v| ["shipping_#{k}",v]}]
p hsh2
# >> {"shipping_address"=>"foo", "shipping_postcode"=>"bar"}
而不是'k.dup.prepend(「shipping _」)'讓Ruby使用''shipping _#{k}「'處理'dup.prepend'。更明顯的是發生了什麼事情。 –
@TheTinMan完成!感謝您的評論 –
如果你想破壞性做到這一點,這是一個簡短的方式:
hash.keys.each{|k| hash.store("shipping_#{k}", hash.delete(k))}
[這個問題](http://stackoverflow.com/問題/ 6210572 /如何替換一個哈希鍵與另一個鍵)和[這個問題](http://stackoverflow.com/questions/4137824/how-to-elegantly-rename-all-如何在哈希中替換密鑰)你出去了。 –