Class() vs. type() в Ruby
Какая разница между методами класса и типа в Ruby? Я заметил, что тип работает, чтобы найти тип некоторых классов, но не другие.
Ответы
Ответ 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