你可以调用class method对象
obj.class
Run Code Online (Sandbox Code Playgroud)
为实例
:test_1.class => Symbol
Run Code Online (Sandbox Code Playgroud)
或者你也可以使用:instance_of? Method
puts 10.instance_of? Fixnum #=> True
puts [1,2].instance_of? Array #=> True
Run Code Online (Sandbox Code Playgroud)
有关更多信息,您可以确定ruby 中的对象类型,请参阅此
您所做的假设是,如果数学运算返回的值是整数,则该值的类将是Fixnum。那是不对的。
看一看:
a = 5
puts a.class
# => Fixnum
b = 5.0
puts b.class
# => Float
Run Code Online (Sandbox Code Playgroud)
从数学上讲,5和5.0是相同的数字,并且该数字是整数。但是Ruby中的5和5.0(与许多其他编程语言一样)并不相同。一个是定点值(ergo Fixnum),另一个是浮点值(Float)。Fixnum只能表示整数,而Float可以表示整数和分数(但是我应该提一下,并不是所有分数都应该代表)。
在Ruby中,当您使用两个Fixnum执行数学运算时,将返回一个Fixnum:
a = 4
puts a.class # => Fixnum
x = a ** 2
puts x # => 16
puts x.class # => Fixnum
Run Code Online (Sandbox Code Playgroud)
但是,如果任何一个数字都是Float,则返回Float:
a = 4
x = a ** 2.0
puts x # => 16.0
puts x.class # => Float
b = 4.0
puts b.class # => Float
y = b ** 2
puts y # => 16.0
puts y.class # => Float
y = b ** 2.0
puts y # => 16.0
puts y.class # => Float
Run Code Online (Sandbox Code Playgroud)
您询问了如何“查找对象的类型”,而对该问题的答案是使用Object#class方法,如上所述。但是正如您所看到的,“对象是Fixnum吗?” 和“对象是整数吗?” 是两个不同的问题。
如果您想知道Ruby中的数字是否是整数,即使它是Float,也请参考以下最佳答案:检查Float是否等于Ruby中的整数值