12345.class在Ruby中返回'Integer'而不是'Fixnum'

时间:2017-11-07 13:07:57

标签: ruby class integer

在我使用.class输入数字的Ruby教程中,它会返回BignumFixnum

当我这样做时,我得到Integer

12345.class
#=> Integer

我在mac上的命令行中使用irb。为什么以上内容不像教程中那样返回Fixnum

2 个答案:

答案 0 :(得分:8)

这取决于Ruby版本。从Ruby 2.4.0开始,我们只有Integer s,不再有Fixnum s和Bignum的区别

https://www.ruby-lang.org/en/news/2016/12/25/ruby-2-4-0-released/

答案 1 :(得分:0)

你应该得到一个更好的教程。

Ruby only 保证名为Integer的类存在。它允许特定于实现的Integer子类,并且强制 >存在,然后Integer 必须完全抽象,但它强制存在那些特定于实现的子类。

我换句话说:

  • Integer永远存在。
  • Integer的特定于实现的子类可能存在也可能不存在。
  • 这些特定于实现的子类可能会或可能不会被命名为BignumFixnum

您使用的教程完全错误(或至少过时)。至少自2009年ISO Ruby语言规范的初稿以来,这已被正式记录,但在此之前就已如此。