2011-02-08 19 views
5

Consente di considerare Ho una classe all'interno di un tempo molto lungo percorso modulo:Come non scrivere il percorso completo del modulo in ruby?

sux = Really::Long::Module::Path::Sucks.new 

Potrei in qualche modo "import" questo modulo in un modo che ho potuto solo utilizzare la classe senza preoccuparsi di scrivere questo percorso ogni volta che lo uso ?

EDIT: So che stare nello stesso modulo rende le cose più facili. Ma non posso essere nello stesso modulo in questo caso.

+0

-1 per volgarità. –

+0

Cosa intendi? La mia profanità è scritta qui, la tua santità no, per favore sii chiaro in modo che le persone possano imparare da esso. –

+0

Se non sai cosa significa la parola, cerca qui: [profanità] (http://en.wiktionary.org/wiki/profanity) –

risposta

4

I moduli sono un oggetto in ruby, quindi è sufficiente creare un riferimento al modulo più corto.

Sux = Really::Long::Module::Path::Sucks 
Sux.new 
+0

Oops, non ho letto abbastanza attentamente la tua domanda. Sicuramente vai sulla rotta 'include'. Non posso cancellare questa domanda poiché questo è un approccio valido in alcuni casi (a meno che qualcuno non oggetti). – cam

+0

questo suona in realtà un modo più corretto per usare solo un tipo da un altro modulo. Includere un modulo può essere anche un po 'più costoso, quindi ho cambiato idea, questa è ora la mia risposta scelta. –

+0

Vorrei solo cambiare quella seconda riga, dal momento che Sux ora è un alias della classe Sucks, non un'istanza di esso. Sux.new lo farebbe. –

3

Nella classe:

include Really::Long::Module::Path 

Questo mix praticamente tutti di costanti che del modulo/metodi in classe tra cui, in modo da poter poi utilizzare la classe Sucks direttamente:

sux = Sucks.new 
2
module A; module B; module C; module D 
    class E; end 
end; end; end; end 

class Sanity 
    include A::B::C::D 
    puts E.new.object_id 
end 
Problemi correlati