Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby中这两种方法的区别是什么?_Ruby - Fatal编程技术网

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()

Ruby中这两种方法的区别是什么

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()