如何使用#each将所有哈希值三倍化?

use*_*531 1 ruby hash each

我有一个哈希如下:

drinks = {"soda" => 3, "water" => 2, "beer" => 6}
Run Code Online (Sandbox Code Playgroud)

我想通过使用来显示每对的价值增加三倍each.

换句话说,我希望"soda"的值为9,"water"的值为6,等等.

Ale*_*x D 9

Hash[hash.map { |k,v| [k, v * 3] }]

  • 只是`哈希[hash.map {| k,v | [k,v*3]}]`就足够了,你不需要压平和喷溅. (4认同)
  • 你曾经做过,曾经需要所有的压扁和喷溅.我很高兴他们解决了这个问题. (2认同)

Tod*_*obs 5

根据您想要的语义,有很多方法可以做到这一点.一种方法是使用Hash#each对每个键/值对进行操作.例如:

drinks = {"soda"=>3, "water"=>2, "beer"=>6}
drinks.each { |key, value| drinks[key] = value.to_i * 3 }
=> {"soda"=>9, "water"=>6, "beer"=>18}
Run Code Online (Sandbox Code Playgroud)