Mam pakiet shinyjs
z funkcją o nazwie show
. Dzisiaj użytkownik zgłosił mi, że to powoduje problemy podczas używania obiektów S4, ponieważ "drukowanie" - obiekt S4 wykorzystuje metodę show
, która jest zamaskowana przez moją paczkę, gdy jest dołączona.Dlaczego drukowanie klasy S4 wywołuje `show` bez nazwaprzestrzeni?
Przykład:
Wystąpił błąd, bo gdy drukujemy wartości x
wydaje zadzwonić show
pod sceną, ale używa shinyjs::show
zamiast methods::show
. Drukując wyraźnie methods::show(x)
, problem znika. Ale jestem nieco zdezorientowany, dlaczego domyślnie system drukujący S4 wywołuje show
bez wyświetlania na nim nazw - czy to nie jest niebezpieczne i naprawdę nie jest to moja paczka, że ten błąd się dzieje?
Uważa się, że bardzo zły jest posiadanie funkcji o tej samej nazwie jako funkcji w methods
? Myślę, że system S4 powinien wiedzieć, aby wywołać własną funkcję show
lub dziedziczoną funkcję S4 show
.
EDIT: Poprosiłem Hadley, co myśli, a on wydaje się również, że może to być błąd w R, wysłałem maila r-devel aby ich opinia
jest 'show' przeznaczone do użycia przez klientów? Jeśli nie, czy * nie * eksportowanie go (np. W pliku 'NAMESPACE') wpłynie na funkcjonalność innych funkcji w twoim pakiecie? – nrussell
Jest przeznaczony do użytku. Jest to najpopularniejsza funkcja w pakiecie. –
Najprawdopodobniej najprościej byłoby zmienić nazwę w tym czasie. – nrussell