From: Trans Date: 2005-07-29T11:26:02+09:00 Subject: Re: What's so special about operators, built-in classes and modules? Daniel Brockman wrote: > Mathieu Bouchard replied[1], > > >>> module A; end > >>> module B; include A; end > >>> module C; include A; end > >>> class D; include C,B; end > >>> > >>> This is a diamond inheritance pattern. > > but you never replied back to him. > > I'd appreciate it if someone could clarify once and for all > how the diamond inheritance problem doesn't exist in Ruby. B/c ruby _linearizes_ the inclusions. irb(main):001:0> module A; end => nil irb(main):002:0> module B; include A; end => B irb(main):003:0> module C; include A; end => C irb(main):004:0> class D; include C,B ; end => D irb(main):005:0> D.ancestors => [D, C, B, A, Object, Kernel] Method lookup will proceed in that order. HTH, T.