Warum ruft der Ausdruck der S4-Klasse "show" auf, ohne ihn zu benennen?

8

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

    
Dean Attali 29.06.2015, 23:09
quelle

1 Antwort

1

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

    
Dean Attali 21.07.2015, 06:31
quelle

Tags und Links