gpt4 book ai didi

ruby - 当您只关心相交键时,如何在 Ruby 中轻松测试哈希相等性?

转载 作者:数据小太阳 更新时间:2023-10-29 08:19:23 24 4
gpt4 key购买 nike

假设我有以下哈希值:

hash_x = {
:a => 1,
:b => 2
}
hash_y = {
:b => 2,
:c => 3
}

我需要一大块逻辑来比较两者是否相等,只考虑相交键。

在此示例中,“b”键是两个哈希值之间唯一的共性,并且它的值在两者中都设置为“2”,因此根据该逻辑,这两个哈希值将被视为相等。

同样,由于 'd' 键的不等性,这两个哈希值将不相等('a' 和 'c' 键值被忽略,因为它们对于各自的哈希值是唯一的):

hash_p = {
:a => 1,
:b => 2,
:d => 3,
}
hash_q = {
:b => 2,
:c => 3,
:d => 4
}

Ruby 中是否有一种聪明的单行代码可以计算两个散列的相交键,然后根据这些键比较它们的值是否相等?

如果您提供测试可加分。

如果您将其猴子修补到 Hash 类中,将获得更多奖励积分。

最佳答案

def compare_intersecting_keys(a, b)
(a.keys & b.keys).all? {|k| a[k] == b[k]}
end

像这样使用:

compare_intersecting_keys(hash_x, hash_y)  # => true
compare_intersecting_keys(hash_p, hash_q) # => false

如果你想要猴子补丁:

class Hash
def compare_intersection(other)
(self.keys & other.keys).all? {|k| self[k] == other[k]}
end
end

关于ruby - 当您只关心相交键时,如何在 Ruby 中轻松测试哈希相等性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1722421/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com