From: Robert Klemme Date: 2006-12-05T02:40:04+09:00 Subject: Re: help, my 'case/when' code doesn't work On 04.12.2006 18:33, cremes.devlist@mac.com wrote: > I've been using ruby for several months now so imagine my surprise when I wrote something using the 'case' construct and I discovered that I didn't understand how to use it! What's worse is that even after looking through the Pickaxe and some code "in the wild" that uses 'case' I still don't see what I'm doing wrong. > > Here's the code in question: > > def case_test(obj) > print "testing via case... " > case obj.class Make that "case obj" instead. > when Array > puts "obj is a #{obj.class}" > when String > puts "obj is a #{obj.class}" > else > puts "obj is unknown: #{obj.class}" > end > end > > def if_test(obj) > print "testing via if... " > klass = obj.class > if klass == Array > puts "obj is a #{klass}" > elsif klass == String > puts "obj is a #{klass}" > else > puts "obj is unknown: #{obj.class}" > end > end > > case_test(Array.new) > if_test(Array.new) > case_test(String.new) > if_test(String.new) > case_test(Hash.new) > if_test(Hash.new) > cremes$ ruby a.rb > testing via case... obj is unknown: Array > testing via if... obj is a Array > testing via case... obj is unknown: String > testing via if... obj is a String > testing via case... obj is unknown: Hash > testing via if... obj is unknown: Hash > > What am I doing wrong here? > robert