Если вы не экспортируете методы, то пользователи (либо из командной строки, либо пытаясь использовать ваши классы и методы в своем собственном пакете с помощью импорта) не смогут их использовать - ваш класс будет отображатьсяс show,ANY-method
.
Вы документируете не общий show
, а метод, подходящий для вашего класса, show,myPackageSpecialClass-method
.Если в вашем NAMESPACE вы
import(methods)
exportMethods(show)
(обратите внимание, что в общем шоу нет возможности экспортировать только некоторые методы) и не предоставили документацию, R CMD check
будет жаловаться
* checking for missing documentation entries ... WARNING
Undocumented S4 methods:
generic 'show' and siglist 'myPackageSpecialClass'
All user-level objects in a package (including S4 classes and methods)
should have documentation entries.
See the chapter 'Writing R documentation files' in the 'Writing R
Extensions' manual.
Ваш пример (я знаю, что это не был серьезный метод показа :)) является хорошей иллюстрацией того, почему методы могут быть задокументированы - объяснение пользователю, почему каждый раз, когда они пытаются отобразить объект, он получает NA
, когдаони ожидали какого-то описания объекта.
Один из подходов к документации - сгруппировать методы с классом в один файл Rd, myPackageSpecialClass-class.Rd
.Этот файл будет содержать псевдоним
\alias{show,myPackageSpecialClass-method}
и использование
\S4method{show}{myPackageSpacialClass}(object)
. Это работает, если не используется причудливая множественная диспетчеризация, т. Е. Ясно, к какому классу применяется метод,Если пользователь запрашивает справку по ?show
, он всегда указывает на страницу справки пакета методов.Чтобы получить помощь по вашим методам / классам, им нужно будет обратиться за помощью к этому конкретному типу помощи.Есть несколько способов сделать это, но мой любимый это
class ? myPackageSpecialClass
method ? "show,myPackageSpecialClass"
Это не будет интуитивно понятным для обычного пользователя;(класс | метод)?... формулировка широко не используется, а спецификация "generic, signature" требует большого понимания того, как работает S4, включая, вероятно, посещение selectMethod(show, "myPackageSpecialClass")
(поскольку метод может быть реализован в классе, от которого наследуется myPackageSpecialClass) или showMethods(class="myPackageSpecialClass", where=getNamespace("myPackage"))
(потому что вам интересно, что вы можете сделать с помощью myPackageSpecialClass).