Ruby中的class()与type()

时间:2009-05-06 19:43:47

标签: ruby syntax

Ruby中的类和类型方法有什么区别?我注意到这种类型可以找到某些类的类型而不是其他类。

2 个答案:

答案 0 :(得分:48)

关键区别在于Object#type已被弃用。从RDoc for Object#type:

  

Object#class的不推荐使用的同义词。

这就是您应该使用Object#class

的原因
  

现在返回obj的类   优先于Object#type,作为   Ruby中的对象类型只是松散的   绑定到该对象的类。这个   必须始终使用a调用方法   显式接收器,因为类也是一个   Ruby中的保留字。

实际上,在大多数情况下,您可能希望使用Object#respond_to?而不是检查对象的类。

答案 1 :(得分:15)

#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