Для экземпляров класса, который я пишу (модель ActiveRecord), я бы хотел иметь возможность перегружать назначения следующим образом:
m.rank['foo'] = 1
m.rank['bar'] = 2
Другими словами, я не хочу, чтобы числа записывались в фактический хэш @rank
, но я бы хотел, чтобы какой-то метод setter вызывался с 'foo'
и 1
в качестве его параметров.
Наивным способом получить эту функциональность было бы определение set_rank(key, rank)
и get_rank(key)
, но синтаксис не очень сладкий. Для лучшего синтаксиса можно определить вспомогательный класс, который определяет []
и []=
, а метод rank
возвращает экземпляр этого класса.
Существует ли установленный шаблон, чтобы написать это в сжатой форме? Или это плохая идея, и я должен просто использовать set_rank
и get_rank
?