更改密钥的值

时间:2014-11-20 09:10:15

标签: ruby

是否有更短的方法来更改密钥的值?

 my_array.each do |x| 
    if my_hash.key?(x) 
      my_hash[x] += 1
    else
      my_hash[x] = 1
    end
  end

3 个答案:

答案 0 :(得分:1)

稍短一些:

my_array.each do |x| 
  my_hash[x] ||= 0
  my_hash[x] += 1
end

答案 1 :(得分:1)

在您的特定情况下,最简单的方法是给哈希值一个默认值:

my_hash = Hash.new(1)
=> {}
my_hash[:x]
=> 1
my_hash[:y] += 1
=> 2

请注意,这只有在默认值是不可变的情况下才有意义,否则引用将在所有键之间共享。

答案 2 :(得分:0)

您可以使用三元运算符在一行上写下您的语句。

my_array.each {|x| my_hash.key?(x) ? my_hash[x].next : my_hash[x] = 1}

如果您将值增加1,也可以使用下一步方法。