我不想從外部設置一個類的類變量(通過attr_accessor),然後從它的一個對象中訪問它。我使用紅寶石1.9.2。這是我的代碼:有什麼不能從Ruby中的對象訪問類變量?
class Service
def initialize(id)
@my_id = id
end
class << self
attr_accessor :shared_id
end
def system_id
@my_id + @@shared_id
end
end
如果我設置Service.shared_id = "A2"
,然後調用Service.new("A").system_id
,這不返回「AA2」。它顯示了以下錯誤:
未初始化的類變量@@在服務
shared_id行爲就像如果我沒有設置Service.service_id。有人能解釋爲什麼發生這種情況嗎?
簡而言之,類實例級別的attr_accessor不使用全局變量。它在該類中使用一個實例變量。 – e3matheus