Скажем, у меня есть следующие хэши:
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.