我的哈希中有以下键:
address, postcode
Run Code Online (Sandbox Code Playgroud)
我想为每个人添加"shipping_"前缀,以便它们成为:
shipping_address, shipping_postcode
Run Code Online (Sandbox Code Playgroud)
代替.我怎样才能做到这一点?
hsh1 = {'address' => "foo", 'postcode' => "bar"}
hsh2 = Hash[hsh1.map{|k,v| [k.dup.prepend("shipping_"),v]}]
p hsh2
# >> {"shipping_address"=>"foo", "shipping_postcode"=>"bar"}
Run Code Online (Sandbox Code Playgroud)
更新
hsh1 = {'address' => "foo", 'postcode' => "bar"}
hsh2 = Hash[hsh1.map{|k,v| ["shipping_#{k}",v]}]
p hsh2
# >> {"shipping_address"=>"foo", "shipping_postcode"=>"bar"}
Run Code Online (Sandbox Code Playgroud)
在 Ruby >= 2.5 中,你可以这样做
hsh.transform_keys! {|k| 'shipping_' + k }
# => {"shipping_address"=>"foo", "shipping_postcode"=>"bar"}
Run Code Online (Sandbox Code Playgroud)
如果你想变得花哨
hsh.transform_keys! &'shipping_'.method(:+)
# => {"shipping_address"=>"foo", "shipping_postcode"=>"bar"}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2812 次 |
| 最近记录: |