def self.methodName vs def methodName

时间:2013-08-09 11:32:17

标签: ruby-on-rails ruby

在Rails模型中,我已经看到我所假设的是由

定义的类方法
def methodName
   #do something
end

def self.methodName
   #do something
end

我似乎无法找到描述这两者之间差异的任何地方,以及何时应该使用其中一种。

也不确定这是否特定于Ruby,Rails或其他语言。 感谢

3 个答案:

答案 0 :(得分:3)

假设User模型

  1. 实例方法

     def methodName
    
        #do something
     end
    
  2. 调用此方法使用

    User.new.methodName
    
    1. 课程方法

      def self.methodName #OR User.methodName
        #do something
      end
      
    2. 调用此方法使用

      User.methodName
      

答案 1 :(得分:2)

第一个是实例方法,第二个是类方法。您可以找到更多信息here

答案 2 :(得分:0)

这两种方法都不是。

def methodName是一个实例方法,而def self.methodName是一个类方法。

两者之间的差异可以在下面的例子中解释。

class MyClass
  def instance_method_name
  end

  def self.class_method_name
  end
end


MyClass.class_method_name
MyClass.new.instance_method_name