在查看一些Ruby代码时,我注意到在方法名称前加上self.
声明的方法。例如:
def self.someMethod
//...
end
在方法名称前加self.
会对方法有什么影响?
答案 0 :(得分:10)
def self.something
是一个类方法,用:
Class.some_method
def something
是一个实例方法,用:
class = Class.new
class.some_method
不同之处在于,一个在类本身上调用,另一个在类的实例上调用。
要定义类方法,您还可以使用类名,但是由于类名可能会更改,因此将来更难以重构。
一些示例代码:
class Foo
def self.a
"a class method"
end
def b
"an instance method"
end
def Foo.c
"another class method"
end
end
Foo.a # "a class method"
Foo.b # NoMethodError
Foo.c # "another class method"
bar = Foo.new
bar.a # NoMethodError
bar.b # "an instance method"
bar.c # NoMethodError
答案 1 :(得分:3)
自我。使它成为一个类方法,而不是一个实例方法。这与其他语言中的静态函数类似。