From: William Djaja Tjokroaminata Date: 2002-10-24T12:42:20+09:00 Subject: Re: Things That Newcomers to Ruby Should Know (10/16/02) Hi David, Your example is really interesting (surprising to me, actually). Aren't we having fun doing "Ruby language analysis"? :) I think your example can be shortened to this: class S < String def speak puts "Hello, I contain: #{self}" end end a = S.new("one") puts "a.class = #{a.class}" # a.class = S puts "(a+'two').class = #{(a+'two').class}" # (a+'two').class = String Well, a "mechanical" explanation may be that class S calls the String class '+' method, which *always* creates a new object of class String. But is it good from the "philosophical" point of view that Class_A + Class_B = Class_B (or even some other Class_C) and not always Class_A? (I would care less if the method is other than '+'...) Regards, Bill