2016-08-25 7 views

答えて

1

module M1 
    puts "self = #{self}" 
    module self::GenName 
    puts Module.nesting 
    def self.gen_name 
    end 
    end 
end 
    # self = M1 
    # M1::GenName 
    # M1 

以来、私たちは M1は驚きとして来るべき

module M1 
    module M1::GenName 
    puts Module.nesting 
    def self.gen_name 
    end 
    end 
end 
    # M1::GenName 
    # M1 

と同じであることがわかります。 GenNameが参照されている(例えば)

M1::GenName.methods(false) 
    #=> [:gen_name] 

です。私たちが代わりに

module M2 
    module GenName 
    puts Module.nesting 
    def self.gen_name 
    end 
    end 
end 
    # M2::GenName 
    # M2 

を書く場合は、

M2::GenName.methods(false) 
    #=> [:gen_name] 

これは、Rubyはどちらの場合もGenName同じ方法を参照することを示しています。 self.が追加されても違いはないと私は確信していますが、私は上記のことが証明に足りないと考えています。

+0

本当です。 'self ::'を追加することはほとんど常に無意味であり、厳密に要求される機会はあまりにも明白ではありません。 – tadman

関連する問題