Ich möchte, dass ein Teil meines Moduls die String-Klasse erweitert.
Dies funktioniert nicht
%Vor%Aber das macht
%Vor%Ich möchte nicht, dass alle anderen Funktionen von MyModule in String angezeigt werden. Es wieder auf höchster Ebene einzubinden, erscheint hässlich. Sicherlich gibt es einen besseren Weg, dies zu tun?
Die Methode exclaim
in Ihrem ersten Beispiel wird in einer Klasse namens MyModule::String
definiert, die nichts mit der Standardklasse String
zu tun hat.
Innerhalb Ihres Moduls können Sie die Standardklasse String
(im globalen Namespace) wie folgt öffnen:
Tags und Links ruby scope metaprogramming