使用Ruby数组中的键数组和默认值填充哈希值

时间:2014-04-08 15:51:57

标签: ruby arrays hash

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

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

populate_hash([:apples, :oranges, :melons], 6) # { apples: 6, oranges: 6, melons: 6 }

如果我正在编写一个传入两个独立数组的方法(一个用于键,一个用于值),那将很容易,但我不确定如何处理默认值。

谢谢。

2 个答案:

答案 0 :(得分:4)

可能有效的另一种方法是使用Array#product

def populate_hash(array, default_value)
  Hash[array.product([default_value])]
end

如果您使用的是Ruby 2.1+,您也可以使用Array#to_h

def populate_hash(array, default_value)
  array.product([default_value]).to_h
end

答案 1 :(得分:1)

我相信代码与你提到的没什么不同。试试这个:

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

我没有添加任何检查来验证a是否和Array,但这样做很容易。