我无法理解self
关键词。
我了解它如何用于区分实例方法和类方法,但是当它在方法内部使用时又如何呢?
就像是:
def self.name
self.name = "TEXT"
end
or
def name2
self.name = "TEXT2"
end
or
class Array
def iterate!(&code)
self.each_with_index do |n, i|
self[i] = code.call(n)
end
end
end
通常,self
因为接收器可以省略,在这种情况下,通常最好这样做。然而,也有一些情况可以省略self
使代码具有其他含义。
一种这样的情况是,如您的示例所示self.name = ...
,使用 setter 方法。 Ruby 的语法在方法和变量调用之间是不明确的,当可以解释为变量或方法的东西后面跟着=
,其解释为局部变量赋值具有优先权。
另一种情况是当你想调用该方法时class
。还有这个关键词class
,以及解释class
因为关键字优先于方法。
还有一种情况是当你想使用该方法时[]
。此表示法也用于数组文字,将其解释为数组的优先级高于将其解释为方法的优先级。
在每种情况下,您都必须使表达式明确成为方法调用。一种方法是显式地编写接收器,即使它是self
。另一种方法是写()
方法之后。
关于你的例子self.each_with_index ...
, the self
可以省略,不推荐这样做。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)