risposta di Michael sembra risolvere la tua domanda ... ancora, ho letto la domanda un po 'diverso e ho scoperto qualcosa di veramente bello che ho pensato valesse la pena condividere.
Ho capito la tua domanda come: "Cosa devo fare se voglio richiedere due moduli con lo stesso nome?", Cioè, come potrei renderli alias se richiedere entrambi comporterebbe uno scontro di namespace? Perché, per quanto riguarda la mia comprensione dell'importanza di Python come ..., ... risolve anche questo tipo di problemi. Un esempio 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
Ora, se io farei questo in un terzo file:
require_relative 'a'
require_relative 'b'
A.greet # => other A
il primo A sarebbe completamente annullata dalla A in b.rb. Anche l'utilizzo del trucco di Michael non aiuta:
require_relative 'a'
TMP_A = A
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 # => other A :(
Peccato. Poi ho pensato, bene, in Ruby c'è l'onnipresente dup
per fare un clone di praticamente tutto e senza troppa speranza ho scritto questo e reran il programma:
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
Quella totalmente fatto il mio giorno, spero voi ragazzi apprezzano altrettanto bene. Ora che ci penso, ha senso - un modulo è un oggetto come gli altri dopotutto, quindi perché non dovrebbe funzionare dup
?
'require' e' include' sono molto diversi in ruby. Non sono intercambiabili tra loro. – x1a4