case uses === which is well defined for obj === class.
What you do is checking the class of a.class which is a class itself.
To make it short: use 'case a' instead of 'case a.class'
cheers
Simon
···
-----Original Message-----
From: Nicolas Desprès [mailto:nicolas.despres@gmail.com]
Sent: Wednesday, July 12, 2006 10:31 AM
To: ruby-talk ML
Subject: Weird behavior of case/when
I'm getting a very weird result using case/when.
$ cat test.rb
def test(a)
case a.class
when Class
puts "class"
when String
puts "string"
else
puts "else"
end
end
test(Float)
test("hello")
test(42)
$ ruby test.rb
class
class
class
$ ruby --version
ruby 1.8.4 (2005-12-24) [i686-linux]