class Event
@event_list = {}
attr_reader :name, :value
def initialize(name, value)
@name = name
@value = value
end
def to_s
"#{@value}"
end
class << self
def event_list
@event_list
end
def event_list=(value); end
def register_event(name, value)
@event_list[name] = Event.new(name, value)
end
def registered_events
event_list
end
end
end
上記のコード スニペットでは、Event.event_list を使用して @event_list にアクセスできます。興味深いのは、この変数を外部から変更できることです。
Event.event_list[:name] = "hello"
Event.event_list # => { :name => 'hello' }
どうすればこれを回避できますか? @event_list を外部から変更したくありません。