外部から (attr_accessor を介して) クラスのクラス変数を設定し、そのオブジェクトの 1 つの内部からアクセスしたくありません。Ruby 1.9.2 を使用しています。これは私のコードです:
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 を設定しなかった場合と同様の動作です。誰かがなぜこれが起こるのか説明できますか?