我对Ruby的attr_writer感到困惑.我正在尝试在数组中添加一个值,但我遇到以下错误:
第13行:#(NoMethodError)的未定义方法`test'
class Pet
attr_writer :test
def initialize()
@test = []
end
end
pet = Pet.new()
pet.test << "Test was a pet"
Run Code Online (Sandbox Code Playgroud)
为什么?据我了解,attr_writer相当于一个setter方法.请解释.谢谢.
是的,attr_writer定义了一个setter方法.但是你的代码试图使用getter
pet.test << "Test was a pet"
Run Code Online (Sandbox Code Playgroud)
这是红宝石看到它的方式(或多或少)
t = pet.test
t << "Test was a pet"
Run Code Online (Sandbox Code Playgroud)
如果您实际设置了一个数组,它将起作用
pet.test = ['Test was a pet']
Run Code Online (Sandbox Code Playgroud)
作为旁注:我个人认为只写属性是代码气味.这里可能有些不对劲.在我的职业生涯中,我从未使用过只写属性.
| 归档时间: |
|
| 查看次数: |
542 次 |
| 最近记录: |