Подтвердить что ты не робот

Class() vs. type() в Ruby

Какая разница между методами класса и типа в Ruby? Я заметил, что тип работает, чтобы найти тип некоторых классов, но не другие.

4b9b3361

Ответ 1

Ключевым отличием является то, что Object#type устарел. Из типа RDoc для объекта #:

Устаревший синоним класса Object #.

Вот почему вы должны использовать Object#class:

Возвращает класс obj, теперь предпочтительнее, чем тип объекта #, как Тип объекта в Ruby свободен только привязан к классу этого объекта. Эта метод всегда следует вызывать с помощью явный приемник, поскольку класс также является зарезервированное слово в Ruby.

В действительности вы, вероятно, захотите использовать Object#respond_to? вместо проверки класса объекта в большинстве случаев.

Ответ 2

#type является синонимом #class, но он устарел в рубине 1.8 и, по-видимому, вышел из рубина 1.9. Просто используйте #class везде.

# For ruby 1.8

$ ri Object#type
------------------------------------------------------------ Object#type
     obj.type   => class
------------------------------------------------------------------------
     Deprecated synonym for Object#class.


# For ruby 1.9

$ ri1.9 Object#type
Nothing known about Object#type