Tim Bates wrote:
> 
> What is the rationale behind Array === Array (or indeed any other class) being
> false?

It's the case equality operator. The Array class object isn't a case of
Array, its a case of Class.

> Array.new === Array is also false. 

Array === Array.new #=> true

> How do I test what class some
> object is in a case statement?

The case statement reverses the order of the call when calling the ===.

case Array.new
when Array 
  puts "I'm an Array"
end
# outputs "I'm an Array"


-- 
(\[ Kent Dahl ]/)_    _~_    __[ http://www.stud.ntnu.no/~kentda/ ]___/~
 ))\_student_/((  \__d L b__/  NTNU - graduate engineering - 5. year  )
( \__\_/__/ ) _)Industrial economics and technological management(
 \____/_\____/ (____engineering.discipline_=_Computer::Technology___)