From: Ruby Newbee Date: 2010-01-20T12:08:59+09:00 Subject: help on the dummy module module ShiftMeansAppend def <<(x) #1 end end class String include ShiftMeansAppend end class Array include ShiftMeansAppend end def append_to_self(x) unless x.is_a? ShiftMeansAppend #2 raise ArgumentError, "I can't trust this object's left-shift operator." end x << x end Hello, For the code above, I can't understand that: #1 why redefine "<<" and set its action to nothing? #2 why x.is_a? ShiftMeansAppend can be true when x is an array or a string? Thanks.