2011-02-08 15 views
5

は、私は本当に長いモジュールパス内のクラスを持って検討しましょう:ルビにフルモジュールパスを書き込む方法はありますか?

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

でしたI何とか「輸入」私はちょうどこのパスを書いて、私はそれを使用するたびに気にせずにクラスを使用することができます方法で、このモジュール?

編集:私は同じモジュールにいることがより簡単になることを知っています。しかし、私はこの場合同じモジュールに入ることはできません。

+0

-1です。 –

+0

どういう意味ですか?私の冒涜はここに書かれています、あなたの聖はそうではありません。人々がそれから学ぶことができるように、明確にしてください。 –

+0

単語が何を意味するのかわからない場合は、ここでそれを見てください:[profanity](http://ja.wiktionary.org/wiki/profanity) –

答えて

4

モジュールはルビーのオブジェクトなので、もっと短いモジュールを参照することができます。あなたのクラスで

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

おっと、あなたの質問を十分に慎重に読まなかった。間違いなく 'include'ルートに行きます。私はこの質問を削除しないかもしれません。なぜなら、これはいくつかのケースで有効なアプローチです(誰かのオブジェクトがない限り)。 – cam

+0

これは、実際には、他のモジュールのタイプを使用するより適切な方法と聞こえます。モジュールを含めるともう少し高価になる可能性があるので、私は自分の考えを変えました。これは今私が選択した答えです。 –

+0

SuxはSucksクラスのエイリアスであるため、その2行目を変更するだけです。 Sux.newはそうするでしょう。 –

3

include Really::Long::Module::Path 

これは基本的に含むクラスにそのモジュールの定数/メソッドのすべてをミックスするので、あなたは、直接Sucksクラスを使用することができます。

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 
関連する問題