0
我有一个Ruby类的初始化方法:缺少`@`的实例变量
def initialize(params)
@foo = private_method(params || {})
end
在同一个班级后来,我看到以下内容:
def new_method_for(user)
foo.each { |f| other_method(f) }
end
为什么是@
失踪从foo前面other_method
?当我在foo.each...
之前放入一个binding.pry时,foo和@foo都被定义了。
你的类可能已经一个getter定义为'@ foo'。也就是说,要么使用访问器定义(':attr_reader foo'或':attr_accessor foo')或显式的'def foo'实例方法,'foo'可能被定义为getter。你没有显示所有的代码,很难说。 – lurker
因为它是'attr_accessor'或'attr_reader',并且有'foo' getter方法。 –
是的,有一行'attr_reader:foo'。谢谢! – rainslg