Ruby动态地向哈希添加键和值

Ruby动态地向哈希添加键和值,ruby,hash,key,Ruby,Hash,Key,你好,我需要一些帮助 这是我想做的 检查哈希是否已经具有基于变量的键 如果键已存在,请向键添加新值 如果密钥不存在,则创建新密钥并向其添加新值 这是我得到的,它有很多问题: if @agencyList.has_key?(domain) @agencyList[domain] << match else @agencyList[domain] = match end if@agencyList.has_key?(域) @agencyList[domain]是要向其中

你好,我需要一些帮助

这是我想做的

  • 检查哈希是否已经具有基于变量的键
  • 如果键已存在,请向键添加新值
  • 如果密钥不存在,则创建新密钥并向其添加新值
  • 这是我得到的,它有很多问题:

    if @agencyList.has_key?(domain)
        @agencyList[domain] << match
    else
        @agencyList[domain] = match
    end
    
    if@agencyList.has_key?(域)
    
    @agencyList[domain]是要向其中添加新值的键数组的值,还是仅是要覆盖的对象

    如果它们是要添加到的数组,那么这应该可以工作

    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
    

    是要向其中添加新值的键数组的值,还是仅要覆盖的对象

    如果它们是要添加到的数组,那么这应该可以工作

    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] ||= []
    @agency_list[domain] << match
    
    @agency_list[domain]| |=[]
    
    @代理列表[domain]假设您的哈希具有数组类型的值,并向数组添加新值,而不是替换它。以下方法可行:

    @agency_list[domain] ||= []
    @agency_list[domain] << match
    
    @agency_list[domain]| |=[]
    
    @ AgCythyList[Reald]也可以考虑使用<代码> MultMAPP<代码> GEM。然后(假设您为
    @agencyList
    使用
    多映射
    实例),您将在所有情况下使用
    @agencyList[domain]=match
    添加一个条目。Ruby中有一个非常强的约定,即只对变量名使用snake\u大小写。CamelCase由解析器检测,并为常量(类名和模块名)保留。使用小写开始的CAMELSE将基本上混淆每个人。也可以考虑使用<代码> MultMAPP < /代码> GEM。然后(假设您为
    @agencyList
    使用
    多映射
    实例),您将在所有情况下使用
    @agencyList[domain]=match
    添加一个条目。Ruby中有一个非常强的约定,即只对变量名使用snake\u大小写。CamelCase由解析器检测,并为常量(类名和模块名)保留。使用以小写开头的camelCase基本上会让所有人感到困惑。我不想覆盖。问题是我添加的值都集中在一个元素中。我需要它们在单独的元素中。我不想覆盖它们。问题是我添加的值都集中在一个元素中。我需要它们在单独的元素中…你经常会看到书面的
    (@agency_list[domain]| 124;=[])@CarySwoveland是的,它更进一步…你经常会看到书面的
    (@agency_list[domain]| 124;=[])@CarySwoveland是的,它更进一步。