2016-03-16 70 views
2

Ruby中這兩種方法有什麼區別?Ruby中這兩種方法有什麼區別?

class Mod 

     def doc(str) 
      ... 
     end 

     def Mod::doc(aClass) 
      ... 
     end 
end 
+3

後者看起來比較像一個類的方法給我一個問題。我會寫'def self.doc ...',雖然 –

+0

Thanx爲您的答覆。 – Messi

+0

請注意,Mod.instance_methods(false)#=> [:doc]'(第一個)和'Mod.methods(false)#=> [:doc]'(第二個)。很奇怪'instance_methods'是第一個方法的名稱(更常用於類的調用),儘管實例方法只能在包含模塊的類的實例上調用(但是,因爲@JörgWMittag很喜歡指出(原文如此),「沒有實例方法,只有方法」)。 –

回答

6
Mod::doc() 

是一個類的方法,而

doc() 

是一個實例方法。下面是如何使用這兩個例子:

class Mod 
    def doc() 
     puts 1 
    end 

    def Mod::doc() 
     puts 2 
    end 
end 

a = Mod.new 
a.doc #=> 1 
Mod.doC#=> 2 

Here的,它與

self.doc() 
相關問題