класс () против типа () в Ruby - PullRequest
41 голосов
/ 06 мая 2009

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

Ответы [ 2 ]

48 голосов
/ 06 мая 2009

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

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

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

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

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

15 голосов
/ 06 мая 2009

#type является синонимом #class, но он устарел в ruby ​​1.8 и, по-видимому, вышел из ruby ​​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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...