【问题标题】:What is difference between these two methods in Ruby?Ruby 中这两种方法有什么区别?
【发布时间】:2016-07-01 19:09:45
【问题描述】:

Ruby 中这两种方法有什么区别?

class Mod   

      def doc(str)
          ...
      end

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

【问题讨论】:

  • 后者在我看来就像一个类方法。不过我会写def self.doc ...
  • 感谢您的回复。
  • 请注意Mod.instance_methods(false) #=> [:doc](第一个)和Mod.methods(false) #=> [:doc](第二个)。奇怪的是 instance_methods 是第一个方法的名称(更常见的是在类上调用),即使实例方法只能在 include 模块的类的实例上调用(但是,正如 @JörgWMittag 喜欢指出(原文如此),“没有实例方法,只有方法”)。

标签: ruby


【解决方案1】:
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()

【讨论】:

    猜你喜欢
    • 2013-09-08
    • 2019-03-31
    • 1970-01-01
    • 2020-02-14
    • 2011-01-10
    • 2013-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多