如何在Ruby中检查对象的数据类型?

我们都知道Ruby是一种纯粹的面向对象语言,在任何一种纯粹的面向对象语言中,每个单独的实体都被视为一个对象。因此,在Ruby中,每个数据类型也被视为一个类,而每个变量都被视为一个对象。因此,基本上可以说,如果要查找变量的数据类型,则最终必须检查该特定对象或实例的类。

如果要处理对象,则必须从Object 类获得帮助,该类是所有对象的默认类。

我们可以通过两种方法检查对象的类,下面列出了它们:

1)借助Object.class方法

此方法在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类,后者是用户定义的类。Obj2Obj3分别是String和Integer类的实例,我们可以在Object.class方法的帮助下找到它们。

2)借助Object.is_a?(Class_name)方法

该方法是在Ruby库的Object类中定义的,非常用于检查特定对象或实例的类。此方法返回布尔值truefalse。例如,如果对象属于该方法所传递的特定类,则该方法将返回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。