当通过访问器方法attribute
访问实例变量时,表达式self.attribute
和attribute
有什么区别?比方说,我们定义了一个访问器:
def post
@post
end
我们可以打电话
self.post
或者只是
post
添加self
有什么特别之处?
当可能存在隐藏方法调用的局部变量时,情况会有所不同。使用 self
允许我们指定我们想要的方法,而不是本地变量。看一个例子:
class Foo
def post
@post
end
def post= (content)
@post = content
end
def test
#difference 1
p post # >> nil
@post = 10
p post # >> 10
post = 42
p post # >> 42
p self.post # >> 10
#difference 2
# assign to @post, note that you can put space between "self.post" and "="
self.post = 12
#otherwise it means assigning to a local variable called post.
post = 12
end
end
Foo.new.test
我是一名优秀的程序员,十分优秀!