Fixnum和Numeric和有什么不一样

GMa*_*arx 4 ruby ruby-on-rails numeric fixnum

它们看起来是等效的,但是当比较它们时,它是错误的:

5.is_a? Fixnum
# => true
5.is_a? Numeric
# => true
Numeric == Fixnum
# => false
Run Code Online (Sandbox Code Playgroud)

tec*_*ams 5

数字

数值是所有更高级别的数值类都应从中继承的类。

数值允许实例化堆分配的对象。其他核心数字类(例如Integer)被实现为立即数,这意味着每个Integer是始终由值传递的单个不可变对象。

固定编号

Fixnum保留可以用本机字(负1位)表示的Integer值。如果对Fixnum的任何操作超出此范围,则该值将自动转换为Bignum。

Fixnum对象具有立即值。这意味着当将它们分配或作为参数传递时,将传递实际对象,而不是对该对象的引用。

注意:每个Fixnum都是数字,但每个Numeric不是一个Fixnum。