通过访问方法attribute
访问实例变量时,表达式self.attribute
和attribute
之间有什么区别?比如说,我们定义了一个访问者:
def post
@post
end
我们可以致电
self.post
或只是
post
添加self
有什么特别之处?
答案 0 :(得分:3)
当阴影方法调用可能存在局部变量时,它会有所不同。使用self
允许我们指定我们想要的方法,而不是本地var。查看示例:
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