在Ruby中使用一组键和一个默认值填充哈希

在Ruby中使用一组键和一个默认值填充哈希,ruby,arrays,hash,Ruby,Arrays,Hash,我必须写一个这样的方法: def populate_hash([key1, key2, key3], default_value) # end populate_hash([:apples, :oranges, :melons], 6) # { apples: 6, oranges: 6, melons: 6 } 如果我编写的方法是在两个单独的数组中传递一个用于键,一个用于值,这将很容易,但我不确定如何处理默认值 谢谢。我相信代码与您提到的没有太大不同。试试这个: def populat

我必须写一个这样的方法:

def populate_hash([key1, key2, key3], default_value)
  #
end

populate_hash([:apples, :oranges, :melons], 6) # { apples: 6, oranges: 6, melons: 6 }
如果我编写的方法是在两个单独的数组中传递一个用于键,一个用于值,这将很容易,但我不确定如何处理默认值


谢谢。

我相信代码与您提到的没有太大不同。试试这个:

def populate_hash(a, default_value)
  result = {}
  a.each{|k| result[k] = default_value}
  return result
end

我没有添加任何检查来验证is和数组,但是这样做很容易

另一种可行的方法是使用Arrayproduct:

如果您使用的是Ruby 2.1+,那么还可以使用Arrayto_h:


如何添加检查?如果不是数组,则添加逻辑以执行某些操作。你应该能够做到这一点,这确实有效。是的,我刚想好怎么检查,有点?非常感谢。
def populate_hash(array, default_value)
  Hash[array.product([default_value])]
end
def populate_hash(array, default_value)
  array.product([default_value]).to_h
end