Мне нужна двунаправленная хеш-таблица в Ruby. Например:
h = {:abc => 123, :xyz => 789, :qaz => 789, :wsx => [888, 999]}
h.fetch(:xyz) # => 789
h.rfetch(123) # => abc
h.rfetch(789) # => [:xyz, :qaz]
h.rfetch(888) # => :wsx
Метод rfetch
означает обратную выборку и является только моим предложением.
Обратите внимание на три вещи:
rfetch
возвращает их все, упакованные в массив. rfetch
ищет свой параметр среди элементов массива. ] fetch
и rfetch
должны выполняться в постоянное время. Существует ли такая структура в Ruby (включая внешние библиотеки)?
Я думал о реализации ее с использованием двух синхронизированных однонаправленных хэшей, когда один из них изменен (и упакован в класс, чтобы избежать проблем с синхронизацией), но, может быть, я мог бы использовать уже существующее решение?