Michaels Antwort scheint Ihre Frage ... noch zu lösen, ich lese die Frage etwas anders und entdeckte etwas wirklich Schönes, das ich wert war, geteilt zu werden.
Ich habe Ihre Frage wie folgt verstanden: "Was mache ich, wenn ich zwei Module mit demselben Namen benötige?", Das heißt, wie könnte ich sie aliasieren, wenn beide Anforderungen zu einem Namespace-Konflikt führen würden? Weil, so weit mein Verständnis von Pythons "Import ... as ..." geht, löst es auch diese Art von Problemen. Ein Beispiel in Ruby:
#file a.rb
module A
def self.greet
puts 'A'
end
end
#file b.rb
module A
def self.greet
puts 'other A'
end
end
Nun, wenn ich dies in einer dritten Datei tun würde:
require_relative 'a'
require_relative 'b'
A.greet # => other A
die erste A würde vollständig von der A in b.rb. außer Kraft gesetzt werden Mit Michael's Trick hilft auch nicht:
Schade. Dann dachte ich, na ja, in Ruby gibt es die allgegenwärtige dup
zur Herstellung eines Klons von im Grunde alles, und ohne zu viel Hoffnung, die ich dies gerade eingegeben und reran das Programm:
require_relative 'a'
TMP_A = A.dup
A.greet # => A
TMP_A.greet # => A
require_relative 'b'
TMP_A2 = A
A.greet # => other A
TMP_A2.greet # => other A
TMP_A.greet # => A :P
Das total mein Tag, hoffe, euch zu schätzen wissen es genauso gut. Nun, da ich darüber nachdenke, macht es Sinn - ein Modul ist ein Objekt wie jedes andere auch, also warum sollte dup
nicht funktionieren?
'require' und' include' sind in Rubin sehr unterschiedlich. Sie sind nicht untereinander austauschbar. – x1a4