2015-06-29 12 views
8

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

+1

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

+0

Jest przeznaczony do użytku. Jest to najpopularniejsza funkcja w pakiecie. –

+0

Najprawdopodobniej najprościej byłoby zmienić nazwę w tym czasie. – nrussell

Odpowiedz

1

Problem został zgłoszony do podstawowego zespołu R i została ustalona na 2015-07-20 w SVN # 68702. Here is the fix

Rozwiązaniem będzie dostępny w R 3.3.0

Powiązane problemy