Ruby中这两种方法的区别是什么?
Ruby中这两种方法的区别是什么Ruby中这两种方法的区别是什么?,ruby,Ruby,Ruby中这两种方法的区别是什么 class Mod def doc(str) ... end def Mod::doc(aClass) ... end end 是类方法,而 doc() 是一个实例方法。下面是一个如何同时使用这两种方法的示例: class Mod def doc() puts 1 end def Mod::doc()
class Mod
def doc(str)
...
end
def Mod::doc(aClass)
...
end
end
是类方法,而
doc()
是一个实例方法。下面是一个如何同时使用这两种方法的示例:
class Mod
def doc()
puts 1
end
def Mod::doc()
puts 2
end
end
a = Mod.new
a.doc #=> 1
Mod.doc #=> 2
这是一个与之相比的问题
self.doc()
在我看来,后者就像一个类方法。我会写
def self.doc…
,谢谢你的回复。注意Mod.instance\u方法(false)#=>[:doc]
(第一个)和Mod.methods(false)#=>[:doc]
(第二个)。奇怪的是,instance\u methods
是第一个方法的名称(通常在类上调用),尽管实例方法只能在包含
模块的类的实例上调用(但是,正如@JörgWMittag喜欢指出的(原文如此),“没有实例方法,只有方法”)。
self.doc()