gpt4 book ai didi

ruby - 带有访问器的 `self` 的遗漏

转载 作者:太空宇宙 更新时间:2023-11-03 18:23:19 25 4
gpt4 key购买 nike

当通过访问器方法attribute 访问实例变量时,表达式self.attributeattribute 有什么区别?比方说,我们定义了一个访问器:

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

关于ruby - 带有访问器的 `self` 的遗漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14602052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com