在Rails模型中,我已经看到我所假设的是由
定义的类方法def methodName #do something end
和
def self.methodName #do something end
我似乎无法找到描述这两者之间差异的任何地方,以及何时应该使用其中一种。
也不确定这是否特定于Ruby,Rails或其他语言。 感谢
答案 0 :(得分:3)
假设User
模型
实例方法
def methodName
#do something
end
调用此方法使用
User.new.methodName
课程方法
def self.methodName #OR User.methodName
#do something
end
调用此方法使用
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