2016-05-23 4 views
0

私は鋸山のソースコードを見て、この見つかった:名前が競合していないどのように来るサブモジュール名はメソッド名と衝突するはずですか?

module Nokogiri 
    class << self 
    def XML # some args 
     # some code 
    end 
    end 
    module XML 
    # more code 
    end 
end 

を? Nokogiri::XMLを使用しているときに、私が何を参照しているかをどのように知っていますか?これはベストプラクティスですか?もしそうなら、これはちょうどここの場合のように、デフォルトのモジュールエントリーポイントを得るための方法ですか?

xml = Nokogiri::XML(open("www.foo.com/bar.xml")) 

答えて

2

彼らは本当に非常によく似ています

module Noko 
    class << self 
    def XML # some args 
     'method' 
    end 
    end 
    module XML 
    end 
end 
Noko::XML #access to a module 
=> Noko::XML 
Noko.XML # access to class method 
=> "method" 
Noko::XML() #access to a class method too 
=> "method" 

そこで、我々はのparamsで、いかなるのparamsことなく、この式はモジュールのように振る舞うことを、言うことができます - 方法のように。

Rubyのスコープ解決演算子の詳細は、this SO questionにあります。

関連する問題