хороший вопрос.
Я разделю ваш Вопрос на две части; вот первый:
Есть ли еще какой-то смысл в [создании общих функций]?
Что ж, этот шаблон обычно вызывается , когда разработчик не знает класс объекта для каждого объекта, который, как он / она ожидает, пользователь передаст в рассматриваемому методу.
И из-за этой неопределенности вызывается этот шаблон проектирования (называемый перегрузкой во многих других языках), который требует R для оценки класса объекта, а затем dispatch , что объект в соответствующий метод с учетом типа объекта.
секунда часть вашего Вопроса: [в] этом случае я не должен использовать [универсальную функцию], верно?
Чтобы попытаться дать вам полезный ответ, выходящий за рамки деталей вашего Вопроса, подумайте, что происходит с исходным методом, когда вы вызываете setGeneric , передавая этот метод.
исходное тело функции заменяется кодом для выполнения диспетчеризации верхнего уровня в зависимости от типа передаваемого объекта. Это заменяет исходное тело функции, которое просто сдвигается вниз на один уровень, так что оно становится методом по умолчанию , на который отправляется функция верхнего уровня (универсальная).
showMethods () позволит вам увидеть все те методы, которые вызываются вновь созданной диспетчерской функцией (универсальной функцией).