ruby-on-rails - Fixnum 和 Numeric 有什么区别

标签 ruby-on-rails ruby ruby-on-rails-3 numeric fixnum

<分区>

它们看起来是等价的,但是当比较它们时,它是假的:

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 - 如何在 rake 任务中进行编译

ruby-on-rails - 迁移和 Rspec

ruby-on-rails - encode_www_form 将空格转换为 + 而不是 %20

ruby-on-rails - 未定义的方法 `activated?'

ruby-on-rails - 在 Rails 3.2 App 中使用多个模型时,如何使用 Devise 处理身份验证