Я хотел бы создать набор, который позволяет добавлять только определенные объекты (kind_of?
) и исключение, которое должно быть поднято на попытайтесь добавить чужой объект.Ruby: Как разрешить добавление только определенного типа объектов в набор
Я пока не нашел ресурсов и еще до того, как начну заниматься рубиновыми ядрами, я был бы благодарен за любой совет, как добиться этого в «ненавязчивой» манере.
Дополнение: Моя цель состоит в том, чтобы создать «шаблонный» контейнерный класс, как в C++ (например, Set), чтобы я мог установить тип один раз при определении экземпляра и сравнить два набора на уровне класса, если они то же (т. е. принимать один и тот же тип), но сохраняя совместимость с наборами по умолчанию, в качестве примера set_instance_a.class == set_instance_b.class
должен выдавать true, если они принимают объект того же типа.
Идея у меня было перегрузить оператор ::[]
так, что я мог бы написать что-то вроде my_set = MySet[Foo]
, который должен возвращать MySet
экземпляр, который принимает только объекты типа Foo
Благодарности!
Итак, вам действительно нужен класс-строитель, который позволяет вам сказать 'c = MySet.new (String) ', чтобы получить подкласс' Set' 'c', который позволяет вам добавлять' String'? –
Да, у меня есть класс типа, который содержит атрибуты и коллекции объектов, которые позже сериализованы в JSON. «Селективный набор» позволяет мне определить атрибут Set на модели, которому разрешено удерживать строки или какой-либо другой тип объекта. Я думаю, что это не так уж далеко, чтобы сделать класс контейнера выборочным на то, что он может содержать, а что нет – sled