は、私は本当に長いモジュールパス内のクラスを持って検討しましょう:ルビにフルモジュールパスを書き込む方法はありますか?
sux = Really::Long::Module::Path::Sucks.new
でしたI何とか「輸入」私はちょうどこのパスを書いて、私はそれを使用するたびに気にせずにクラスを使用することができます方法で、このモジュール?
編集:私は同じモジュールにいることがより簡単になることを知っています。しかし、私はこの場合同じモジュールに入ることはできません。
は、私は本当に長いモジュールパス内のクラスを持って検討しましょう:ルビにフルモジュールパスを書き込む方法はありますか?
sux = Really::Long::Module::Path::Sucks.new
でしたI何とか「輸入」私はちょうどこのパスを書いて、私はそれを使用するたびに気にせずにクラスを使用することができます方法で、このモジュール?
編集:私は同じモジュールにいることがより簡単になることを知っています。しかし、私はこの場合同じモジュールに入ることはできません。
モジュールはルビーのオブジェクトなので、もっと短いモジュールを参照することができます。あなたのクラスで
Sux = Really::Long::Module::Path::Sucks
Sux.new
おっと、あなたの質問を十分に慎重に読まなかった。間違いなく 'include'ルートに行きます。私はこの質問を削除しないかもしれません。なぜなら、これはいくつかのケースで有効なアプローチです(誰かのオブジェクトがない限り)。 – cam
これは、実際には、他のモジュールのタイプを使用するより適切な方法と聞こえます。モジュールを含めるともう少し高価になる可能性があるので、私は自分の考えを変えました。これは今私が選択した答えです。 –
SuxはSucksクラスのエイリアスであるため、その2行目を変更するだけです。 Sux.newはそうするでしょう。 –
:
include Really::Long::Module::Path
これは基本的に含むクラスにそのモジュールの定数/メソッドのすべてをミックスするので、あなたは、直接Sucks
クラスを使用することができます。
sux = Sucks.new
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
を
-1です。 –
どういう意味ですか?私の冒涜はここに書かれています、あなたの聖はそうではありません。人々がそれから学ぶことができるように、明確にしてください。 –
単語が何を意味するのかわからない場合は、ここでそれを見てください:[profanity](http://ja.wiktionary.org/wiki/profanity) –