gpt4 book ai didi

ruby - attr - 我应该使用@还是不带@的getter?

转载 作者:行者123 更新时间:2023-12-03 02:07:43 24 4
gpt4 key购买 nike

我通过这段代码看到了这一点:

# filename: play.rb
class A
attr_reader :a
def initialize(num)
@a=num # I have to use @ here
end

def m1
p "---"
p @a
p a
end
end

obj = A.new(1)
obj.m1

我得到了输出

$ ruby play.rb 
"---"
1
1

如您所见,我可以在 m1 方法中将 a 引用为 @aa ,并且两者都有效。

我应该何时使用哪个?为什么?

最佳答案

在这种情况下,您不使用局部变量 a ,而是使用为您提供 @a 的 getter 方法,因为它具有 attr_reader :a >。它生成一个用作 getter 的方法#a()

你真正做的是:

  def m1
p "---"
p @a
p a()
end

如果我有访问器,我会使用它,而不是实例变量。它让我稍后可以更改 getter。

关于ruby - attr - 我应该使用@还是不带@的getter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58996485/

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