Ich habe ein Paket shinyjs
mit einer Funktion namens show
. Heute hat mir ein Benutzer berichtet, dass dies zu Problemen bei der Verwendung von S4-Objekten führt, weil das Drucken eines S4-Objekts die Methode show
verwendet, die von meinem Paket maskiert wird, wenn es angehängt ist.
Beispiel:
%Vor% Es gibt einen Fehler, denn wenn wir den Wert von x
ausgeben, scheint er show
unter den Szenen aufzurufen, aber es verwendet shinyjs::show
anstelle von methods::show
. Durch explizites Drucken von methods::show(x)
verschwindet das Problem. Aber ich bin ein wenig verwirrt darüber, warum das S4-Drucksystem standardmäßig show
aufruft, ohne es zu benennen - ist das nicht gefährlich und nicht wirklich mein Paket, dass dieser Fehler passiert?
Es wird als sehr schlechte Idee betrachtet, eine Funktion mit demselben Namen wie eine Funktion in methods
zu haben? Mein Denken ist, dass das S4-System wissen sollte, dass es seine eigene show
-Funktion oder eine vererbte S4 show
-Funktion nennt.
BEARBEITEN: Ich habe Hadley gefragt, was er denkt und er scheint auch zu glauben, dass dies ein Fehler in R sein könnte, ich habe r-develed per E-Mail geschickt, um ihre Meinung einzuholen
Das Problem wurde dem R-Kernteam gemeldet und am 20. Juli 2015 im SVN-Commit # 68702 behoben. Hier ist die Lösung
Das Update wird in R 3.3.0 verfügbar sein