我有一個紅寶石的基本問題,我不知道爲什麼當創建一個擴展自我模塊,attr_accessor完美的作品。爲什麼attr_accessor在擴展自我的模塊中工作?
據我所知,attr_accessor應該在一個實例類中工作,但對於一些reasone它在這些模塊中工作。
下面是一個例子
module A
extend self
attr_accessor :custom_method
def foo
self.custom_method
end
end
A.custom_method # => nil
A.foo # => nil
A.custom_method = "bar" # => "bar"
A.custom_method # => "bar"
A.foo # => "bar"
因此,將與A.custom_method發生什麼?從現在開始,它會在整個應用程序中成爲「酒吧」嗎?
我該如何銷燬A的這個「實例」?
_「我有一個基本問題[...]」__ extend self'看起來無辜而且簡單,但結果可能令人難以置信。要理解正在發生的事情,可能會更容易刪除該行並擴展另一個對象,如'obj = Object.new; obj.extend(A)'。 – Stefan
你知道'extend'是什麼嗎? –