我希望能够在Ruby中计算两个哈希值的差,并得到一个第三个哈希值。
这两个哈希值看起来像这样:
h1 = {"Cat" => 100, "Dog" => 5, "Bird" => 2, "Snake" => 10}
h1.default = 0
h2 = {"cat" => 50, "dog" => 3, "BIRD" => 4, "Mouse" => 75, "Snake" => 10}
h2.default = 0
我希望能够这样调用h1的方法:
h1.difference(h2)
并将此哈希作为结果获得:
{"Cat" => 50, "Dog" => 2, "BIRD" => -2, "Mouse" => -75}
我想创建一个新的哈希表,其中键来自两个哈希表,而新哈希表的值是第一个哈希表中该键的值减去第二个哈希表中该键的值。但是,有一个限制:我希望这个哈希方法能够不考虑键的大小写而正常工作。换句话说,我希望"Cat"与"cat"匹配。
以下是我的初步代码:
class Hash
def difference(another_hash)
(keys + another_hash.keys).map { |key| key.strip }.uniq.inject(Hash.new(0)) { |acc, key| acc[key] = (self[key] - another_hash[key]); acc }.delete_if { |key, value| value == 0 }
end
end
这还可以,但很遗憾,结果不是我想要的。
欢迎任何帮助。