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

时间:2014-01-12 11:37:16

标签: ruby hash

坚持代码大战挑战:完成解决方案,使其获取一组键和一个默认值,并返回一个散列,并将所有键设置为默认值。

我的回答导致解析错误:

def solution([:keys, :default_value])
  return { :keys => " ", :default_value => " " }
end

我错过了使用 all 将键设置为默认值返回哈希键的操作吗?

2 个答案:

答案 0 :(得分:12)

执行以下操作:

def solution(keys,default_val)
  Hash[keys.product([default_val])]
end

solution([:key1,:key2],12)  # => {:key1=>12, :key2=>12}

阅读Array#productKernel#Hash

答案 1 :(得分:1)

我建议修改你的解决方案:

def solution(keys, default_value)
  hash = {}
  keys.each do |key|
    value = default_value.dup rescue default_value
    hash[key] = value
  end
  hash
end

dup是解决令人讨厌的情况,其中default_value是一个字符串,然后你可以这样做。:

hash[:foo] << 'bar'

...使用您的版本,这将修改多个值而不是单个值。