Ruby动态地将键和值添加到哈希值

时间:2014-03-21 03:00:38

标签: ruby hash key

您好,我需要一些帮助。

这是我想要做的。

  1. 根据变量
  2. 检查哈希是否已有密钥
  3. 如果密钥已存在,请为密钥添加新值
  4. 如果密钥不存在,请创建新密钥并向其添加新值
  5. 这是我得到的,它有很多问题:

    if @agencyList.has_key?(domain)
        @agencyList[domain] << match
    else
        @agencyList[domain] = match
    end
    

    谢谢!

2 个答案:

答案 0 :(得分:2)

假设您的哈希值具有数组类型的值,并将新值添加到数组而不是替换它。以下内容可行:

@agency_list[domain] ||= []
@agency_list[domain] << match

享受!

答案 1 :(得分:1)

要添加新值的键数组的值,或者只是要覆盖的对象?

如果它们是您要添加的阵列,则应该可以使用;

if @agency_list.has_key?(domain)
  @agency_list[domain] << match
else
  # This way you can create the array and put the value in at the same time
  @agency_list[domain] = [match]
end

如果它们只是您想要覆盖的对象,您甚至不必检查它们是否存在密钥;

@agency_list[domain] = match