【问题标题】:appending to hash while looping循环时附加到哈希
【发布时间】:2009-11-02 15:26:11
【问题描述】:

我会尽快完成的。我正在使用 Ruby/LDAP 使用我的 base_dn 条件进行搜索。我得到一个结果(条目类型)。我可以使用 to_hash 方法将 Entry 类型的对象转换为 Hash。问题是当返回结果时,它是多个 Entry 类型的对象。我想在循环时将它们转换为散列附加它们。看看这个:

connection.search(base_dn,scope,filter) do |entry|
        #pp entry.to_hash
        searchResult.merge!(entry.to_hash)
end

你知道如果我正在循环并且我想将对象添加到数组中,我可以使用

上面的代码给了我搜索的最后一个条目。它基本上每次都覆盖 searchResult 哈希,而不是与现有哈希合并。提前致谢。

【问题讨论】:

    标签: ruby hash merge ldap


    【解决方案1】:

    使用哈希时#merge!您将需要提供一个正确键入的附加哈希,否则它会将您的所有结果混合在一起。

    我敢打赌,你真正需要的是类似于:

    connection.search(base_dn,scope,filter) do |entry|
      searchResult[entry.id] = entry.to_hash
    end
    

    这里的entry.id代表一个唯一的标识符,可以用来分割条目记录。

    由于哈希是一个键/值存储,你不能像数组那样真正“附加”到它,数组本质上是一个对象列表。

    【讨论】:

    • 另外,感谢您解释为什么我这样做是行不通的。我看起来也不对。非常感谢
    猜你喜欢
    • 1970-01-01
    • 2012-03-05
    • 2018-01-28
    • 1970-01-01
    • 2014-11-14
    • 2013-06-13
    • 2021-07-22
    • 2016-02-08
    • 2014-01-10
    相关资源
    最近更新 更多