Daniel Schierbeck wrote: > anne001 wrote: > >> I am a newbie on ruby, and I am a bit confused by this code, it seems >> like a snake eating its own tail! game contains an object world which >> is defined as containing game? >> >> Can someone explain this a little to me? How is that different from >> using a @@ class object? >> > > Say you have three classes, A, B, and C, and you want their instances > to be able to communicate. These three classes will all be > instantiated together, so we know that the other objects are there. > You then write a class, let's just call it Base, that you instantiate > instead of the three classes. It will insatntiate them instead, and > pass a reference to itself to each of them. > > class Base > attr_reader :a, :b, :c > > def initialize > @a, @b, @c = A.new(self), B.new(self), C.new(self) > end > > # We'll keep the other classes in here, so we don't > # pollute the main namespace > class A > def initialize(base) > @base = base > @b, @c = base.b, base.c > end > end > > class B > def initialize(base) > @base = base > @a, @c = base.a, base.c > end > end > > class C > def initialize(base) > @base = base > @a, @b = base.a, base.b > end > end > end Ah, that is so clever.