-1

在 Rails 模型中,我已经看到我假设的被称为类方法的定义要么由

def 方法名
   #做一点事
结尾

def self.methodName
   #做一点事
结尾

我似乎找不到任何地方可以描述这两者之间的差异,以及何时应该使用一个与另一个。

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

4

3 回答 3

4

假设User模型

  1. 实例方法

     def methodName
    
        #do something
     end
    

调用此方法使用

User.new.methodName
  1. 类方法

    def self.methodName #OR User.methodName
      #do something
    end
    

调用此方法使用

User.methodName
于 2013-08-09T11:42:10.060 回答
3

第一个是实例方法,第二个是类方法。你可以在这里找到更多信息

于 2013-08-09T11:34:58.990 回答
1

并非两者都是类方法。

def methodName是实例方法,而 defself.methodName是类方法。

两者之间的区别可以在下面的示例中进行解释。

class MyClass
  def instance_method_name
  end

  def self.class_method_name
  end
end


MyClass.class_method_name
MyClass.new.instance_method_name
于 2013-08-09T11:34:11.440 回答