【发布时间】:2012-01-04 07:27:11
【问题描述】:
在查看一些 Ruby 代码时,我注意到在方法名称前附加了 self. 声明的方法。例如:
def self.someMethod
//...
end
在方法名称前添加self. 对方法有何影响?
【问题讨论】:
在查看一些 Ruby 代码时,我注意到在方法名称前附加了 self. 声明的方法。例如:
def self.someMethod
//...
end
在方法名称前添加self. 对方法有何影响?
【问题讨论】:
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
【讨论】:
self 不是我将与类方法关联的第一个关键字。
self.someVariable?
@@class_variable 进行初始化,我建议为它们创建“getter”和“setter”方法。这个答案可能有用。 stackoverflow.com/questions/895747/…
self. 的重要性。
自我。使其成为类方法,而不是实例方法。这类似于其他语言中的静态函数。
【讨论】: