gpt4 book ai didi

ruby-on-rails - attr_accessor 不更新值

转载 作者:数据小太阳 更新时间:2023-10-29 08:02:47 27 4
gpt4 key购买 nike

我有一个带有属性访问器的类:

class MyClass
attr_accessor :a, :b

def initialize
@a = 1
@b = 2
end

def update_values options
a = options[:a]
b = options[:b]
end
end

我认为在调用 update_values 之后,ab 应该保留它们的新值:

describe MyClass do
before do
@thing = MyClass.new
end

it 'should set a and b' do
expect(@thing.a).to eq 1
expect(@thing.b).to eq 2
@thing.update_values a: 2, b: 5
expect(@thing.a).to eq 2
expect(@thing.b).to eq 5
end
end

这没有发生 - 测试失败:

Failures:

1) MyClass should set a and b
Failure/Error: expect(@thing.a).to eq 2

expected: 2
got: 1

(compared using ==)

这不是属性访问器应该如何工作的吗?我错过了什么?

最佳答案

您只是在定义局部变量 ab

您想要的是为实例变量 ab 设置新值。以下是您可以如何做到这一点:

def update_values options
self.a = options[:a] # or @a = options[:a]
self.b = options[:b] # or @b = options[:b]
end

现在:

foo = MyClass.new
#=> #<MyClass:0x007f83eac30300 @a=1, @b=2>
foo.update_values(a: 2, b: 3)
foo #=>#<MyClass:0x007f83eac30300 @a=2, @b=3>

关于ruby-on-rails - attr_accessor 不更新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40366254/

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