From: Colin Bartlett Date: 2010-08-21T07:29:37+09:00 Subject: Re: case and class --00151743fa10d4e192048e48d4e0 Content-Type: text/plain; charset=ISO-8859-1 On Fri, Aug 20, 2010 at 10:51 PM, Ralph Shnelvar wrote: > Why does "YYY" get printed out here? > > - - - > > class XXX > end > > x = XXX.new > > case x.class > when XXX > puts "XXX" > else > puts "YYY" # surprise! > end It's because of the definition of "===" which is used in the case statement. Does the following help? class XXX end x = XXX.new case x.class when XXX then puts "XXX" else puts "YYY" # surprise! end #=> YYY case x when XXX then puts "XXX 2" else puts "YYY 2" end #=> XXX 2 case x.class when Class then puts "XXX 3" else puts "YYY 3" end #=> XXX 3 --00151743fa10d4e192048e48d4e0--