Determining type of an object in ruby

前端 未结 5 1158
情书的邮戳
情书的邮戳 2021-01-29 17:46

I\'ll use python as an example of what I\'m looking for (you can think of it as pseudocode if you don\'t know Python):

>>> a = 1
>>> type(a)
&l         


        
5条回答
  •  孤城傲影
    2021-01-29 18:14

    The proper way to determine the "type" of an object, which is a wobbly term in the Ruby world, is to call object.class.

    Since classes can inherit from other classes, if you want to determine if an object is "of a particular type" you might call object.is_a?(ClassName) to see if object is of type ClassName or derived from it.

    Normally type checking is not done in Ruby, but instead objects are assessed based on their ability to respond to particular methods, commonly called "Duck typing". In other words, if it responds to the methods you want, there's no reason to be particular about the type.

    For example, object.is_a?(String) is too rigid since another class might implement methods that convert it into a string, or make it behave identically to how String behaves. object.respond_to?(:to_s) would be a better way to test that the object in question does what you want.

提交回复
热议问题