Ruby 如何使用每个哈希值将所有哈希值增加三倍?

Ruby 如何使用每个哈希值将所有哈希值增加三倍?,ruby,hash,each,Ruby,Hash,Each,我的散列如下: drinks = {"soda" => 3, "water" => 2, "beer" => 6} 我想通过使用每一个来显示每一对三倍的值 换句话说,我希望苏打水的值为9,水的值为6,等等。Hash[Hash.map{k,v|[k,v*3]}Hash[Hash.map{k,v|[k,v*3]}根据您想要的语义,有很多方法可以做到这一点。一种方法是使用对每个键/值对进行操作。例如: drinks = {"soda"=>3, "water"=>2, "

我的散列如下:

drinks = {"soda" => 3, "water" => 2, "beer" => 6}
我想通过使用每一个来显示每一对三倍的值


换句话说,我希望苏打水的值为9,水的值为6,等等。

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

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

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

drinks = {"soda"=>3, "water"=>2, "beer"=>6}
drinks.each { |key, value| drinks[key] = value.to_i * 3 }
=> {"soda"=>9, "water"=>6, "beer"=>18}

有很多方法可以做到这一点,具体取决于您想要的语义。一种方法是使用对每个键/值对进行操作。例如:

drinks = {"soda"=>3, "water"=>2, "beer"=>6}
drinks.each { |key, value| drinks[key] = value.to_i * 3 }
=> {"soda"=>9, "water"=>6, "beer"=>18}

只要Hash[Hash.map{| k,v |[k,v*3]}就足够了,你不需要整平和飞溅。你曾经需要所有的整平和飞溅。我很高兴他们解决了这个问题。对于那些想要更简洁的人,切面!:hash.mash{| k,v |[k,3*v]}。仍然在努力让它进入核心,但到目前为止没有运气。这是正确的答案。这里的每个工具都是错误的。只要Hash[Hash.map{| k,v |[k,v*3]}就足够了,你不需要展平和铺展。你曾经需要所有的展平和铺展。我很高兴他们解决了这个问题。对于那些想要更简洁的人,切面!:hash.mash{| k,v |[k,3*v]}。仍然在努力让它进入核心,但到目前为止没有运气。这是正确的答案。这里的每个工具都是错误的。@user937531:确定要销毁原始饮料阵列吗?如果在适当的位置更新变量,则更难对函数进行推理…@user937531:确定要销毁原始数组吗?如果您在适当的位置更新变量,则更难对函数进行推理。。。
drinks.each_with_object({}) { |(k,v),h| h[k] = 3 * v }   
  => {"soda"=>9, "water"=>6, "beer"=>18}