This question already has answers here:
What is the difference between Integer and Fixnum?
(2 个回答)
5年前关闭。
它们看起来是等价的,但是当比较它们时,它是错误的:
(2 个回答)
5年前关闭。
它们看起来是等价的,但是当比较它们时,它是错误的:
5.is_a? Fixnum
# => true
5.is_a? Numeric
# => true
Numeric == Fixnum
# => false
最佳答案
数字
Numeric 是所有更高级别的数字类都应该继承的类。
Numeric 允许实例化堆分配的对象。其他核心数字类如 Integer 被实现为立即数,这意味着每个 Integer 是一个始终按值传递的单个不可变对象(immutable对象)。
FIXNUM
Fixnum 保存可以用本地机器字(减去 1 位)表示的整数值。如果对 Fixnum 的任何操作超出此范围,则该值将自动转换为 Bignum。
Fixnum 对象具有直接值(value)。这意味着当它们被分配或作为参数传递时,传递的是实际对象,而不是对该对象的引用。
注意: 每个 Fixnum 都是 Numeric 但每个 Numeric 都不是 Fixnum。
更新: Ruby 2.4 将 fixnum 和 bignum 统一为整数。
关于ruby-on-rails - Fixnum 和 Numeric 有什么区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35547675/
10-09 02:00