<分区>
它们看起来是等价的,但是当比较它们时,它是假的:
5.is_a? Fixnum
# => true
5.is_a? Numeric
# => true
Numeric == Fixnum
# => false
<分区>
它们看起来是等价的,但是当比较它们时,它是假的:
5.is_a? Fixnum
# => true
5.is_a? Numeric
# => true
Numeric == Fixnum
# => false
最佳答案
数字
Numeric 是所有更高级别的数字类都应继承的类。
Numeric 允许实例化堆分配的对象。 Integer 等其他核心数字类是作为立即数实现的,这意味着每个 Integer 都是一个始终按值传递的不可变对象(immutable对象)。
FIXNUM
Fixnum 保存可以用本地机器字(负 1 位)表示的整数值。如果对 Fixnum 的任何操作超出此范围,该值将自动转换为 Bignum。
Fixnum 对象具有立即值。这意味着当它们作为参数分配或传递时,传递的是实际对象,而不是对该对象的引用。
注意:每个 Fixnum 都是数字,但每个数字都不是 Fixnum。
更新:Ruby 2.4 将 fixnum 和 bignum 统一为整数。
关于ruby-on-rails - Fixnum 和 Numeric 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35547675/
相关文章:
ruby - 在 Ruby 中,计算数字 e 时出现意外结果
c - 如何在 C 中访问 ruby 数组的值? (编辑 array.c :rb_ary_initialize from ruby source code)
ruby-on-rails - 带有 acts-as-taggable-on 的简单表单自定义输入
ruby-on-rails - Rails 路由 : What does only: [] do here?
ruby-on-rails - 如何将自定义 delayed_job 作业与 ActiveJob 一起使用?
ruby-on-rails - encode_www_form 将空格转换为 + 而不是 %20