我是一个初学者,昨天在写代码时遇到了一个奇异的情况
示例代码:
class A
attr_accessor :a
private :a=
def initialize
self.a ||= 1
end
end
然后当我实例化这个模型时,给我报错说:
NoMethodError: private method `a=' called for #<A:0x007fbbab4dbbb0>
如果代码改成这样就不会报错了
self.a || self.a = 1
# 或者这样子也没问题
self.a = self.a || 1
请问这是一个 BUG 还是本来就是这么设计的?如果本来就是这么设计的……为什么要这么设计啊…………………………