дополнение - это математический термин для того, что я ищу, но для контекста и, возможно, более целевого решения: у меня есть хэш A, который может иметь вложенные хэши (т.е. они являются N-мерными ), и я применяю к нему процесс (над которым у меня нет контроля), который возвращает хеш B, который является хешем A с некоторыми удаленными элементами. С этого момента я пытаюсь найти элементы в A, которые были удалены из B.
Например: (обратите внимание, что я использую символы для простоты. Ключи всегда будут символами, но значения не будут.)
a = {:a => :b,
:c => {:d => :e, :f => :g},
:h => :i,
:j => {:k => :l, :m => :n},
:o => {:p => :q, :r => :s},
:t => :u}
b = {:h => :i,
:j => {:k => :l, :m => :n},
:o => {:r => :s},
:t => :u}
complement(a,b)
#=> {:a => :b,
# :c => {:d => :e, :f => :g},
# :o => {:p => :q}}
Каков наилучший (рубиновый) способ сделать это?