2016-08-25 31 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] 

這表明紅寶石引用GenName在這兩種情況下相同的方式。我相信如果加入self.沒有什麼區別,但我也認爲上述內容缺乏證據。

+0

這是真的。添加self ::'幾乎總是毫無意義的,而且它嚴格要求的場合如此晦澀難懂,我不確定我能想到它。 – tadman

相關問題