Я ищу способ проверки объектов S3 в моем пакете Momocs.Можем ли мы объединить гибкость S3 с проверкой представлений S4?
Ранние версии пакета были написаны с использованием S4, а затем я перешел на S3 ради гибкости, потому что пользователи были больше в S3, потому что мне не нужно многократное наследование, etc.. Основная стоимость этого изменения фактически потеряла проверку/проверку достоверности S4.
Моя проблема заключается в следующем: как мы можем предотвратить непреднамеренное «unvalidate» S3-объект, например, пытающийся расширить существующие методы или манипулировать структурой объекта?
Я уже написал функцию validate
, но до сих пор я проверяю только до критических шагов, как правило, превращая объект из класса в другой.
Мой вопрос:
- я хочу, чтобы мой торт и съесть его (гибкость S3 и S4 представление проверки)? В этом случае мне нужно будет добавить функцию
validate
во все методы моего пакета? - или есть более умный способ сверху S3, что-то вроде «когда-нибудь мы что-то делаем на объекте определенного класса, вызываем функцию на нем»?
У меня уже есть такая [вещь] (https://github.com/vbonhomme/Momocs/blob/master/R/ cl-validate.R), но я хотел бы знать, могу ли я избежать добавления его повсюду. Подведение его в 'print' - очень хороший трюк! –
@VincentBonhomme Это компромисс между S3 и S4. Вы должны проверить вручную, потому что S3 буквально просто отбрасывает атрибут класса; он не предоставляет никакой другой инфраструктуры для какой-либо проверки. – Thomas