gpt4 book ai didi

ruby-on-rails - 访问使用 attr_accessor 创建的变量

转载 作者:数据小太阳 更新时间:2023-10-29 07:31:03 24 4
gpt4 key购买 nike

我想了解 attr_accessor 给我的访问权限。据我了解,它提供了 getter 和 setter 方法。所以 attr_accessor :color 它将为我创建如下内容

def color
@color
end

def color=(value)
@color = value
end

我不明白的是为什么在下面的代码中,为什么我不能在初始化程序中使用 color= ? (它最终是空白的)。为什么我需要使用 @color=self.color= 来代替? color= 不应该是一种调用上面刚刚为我创建的 setter 方法的方法吗?

class Bird
attr_accessor :color
def initialize(c="green")
color = c # this doesn't work
# either one of the following DOES work
# @color = c
# self.color = c
end
end

puts Bird.new.color # prints nothing unless using @color or self.color

最佳答案

color = "green" 这样的表达式将 "green" 分配给局部变量, 分配给属性。属性 setter 总是需要一个接收者,即使接收者是self

关于ruby-on-rails - 访问使用 attr_accessor 创建的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5950633/

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