Типы классов Ruby и операторы case

В чем разница между

case item.class
when MyClass
  # do something here
when Array
  # do something different here
when String
  # do a third thing
end

и

case item.class
when MyClass.class
  # do something here
when Array.class
  # do something different here
when String.class
  # do a third thing
end

По некоторым причинам, первая из этих работ иногда, а вторая нет, а в других случаях, второй работает, а первый нет. Почему? Какой из них «правильный» способ сделать это?

127
задан David Hollman 11 October 2010 в 17:07
поделиться