我们都知道Ruby是一种纯粹的面向对象语言,在任何一种纯粹的面向对象语言中,每个单独的实体都被视为一个对象。因此,在Ruby中,每个数据类型也被视为一个类,而每个变量都被视为一个对象。因此,基本上可以说,如果要查找变量的数据类型,则最终必须检查该特定对象或实例的类。
如果要处理对象,则必须从Object 类获得帮助,该类是所有对象的默认类。
我们可以通过两种方法检查对象的类,下面列出了它们:
此方法在Ruby库的Object类中定义,非常用于检查特定对象或实例的类。此方法返回特定实例的类名称。
语法:
object_name.class
程序:
=begin Ruby program to check the Class of an object =end class Student def name puts "Hrithik" end end Obj1 = Student.new Obj2 = "Nhooo.com" Obj3 = 12 puts "The class of Obj1 is #{Obj1.class}" puts "The class of Obj2 is #{Obj2.class}" puts "The class of Obj3 is #{Obj3.class}"
输出结果
The class of Obj1 is Student The class of Obj2 is String The class of Obj3 is Integer
说明:
如您在输出中所看到的,我们正在使用Object.class方法来查找对象的类。您可以观察到第一个对象属于Student类,后者是用户定义的类。Obj2和Obj3分别是String和Integer类的实例,我们可以在Object.class方法的帮助下找到它们。
该方法是在Ruby库的Object类中定义的,非常用于检查特定对象或实例的类。此方法返回布尔值true和false。例如,如果对象属于该方法所传递的特定类,则该方法将返回true,否则返回false。
语法:
Object_name.is_a?(Class_name)
程序:
=begin Ruby program to check the Class of an object =end class Student def name puts "Hrithik" end end Obj1 = Student.new Obj2 = "Nhooo.com" Obj3 = 12 if (Obj1.is_a?(Student) == true) puts "Obj1 is of Student class" end if (Obj2.is_a?(String) == true) puts "Obj2 is of String class" end
输出结果
Obj1 is of Student class Obj2 is of String class
说明:
在上面的代码中,您可以观察到我们正在使用is_a方法检查对象的类。当发现对象属于该特定类时,该方法将返回true。