From: Joel VanderWerf Date: 2004-04-10T03:28:22+09:00 Subject: Re: Cache of objects rolo wrote: > class Thing > @cache = {} > def self.instance(name) > @cache[name] ||= new(name) > end > def initialize(name) > @name = name > end > end > > t1 = Thing.instance "t" > t2 = Thing.instance "t" > > p t1.id > p t2.id > > > [rolo] mysterious. it works! but since cache is an instance level variable how is it shared amongst all the class instances? @cache is an instance variable of the class Object called Thing. It's just a regular instance variable, but it happens to be stored in a class object instead of in instances of the class. Instances of Thing can't access it directly.