首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Integer和Fixnum有什么区别?

Integer和Fixnum有什么区别?
EN

Stack Overflow用户
提问于 2014-01-27 11:40:29
回答 2查看 22.5K关注 0票数 69

我知道Fixnum类继承自Integer类。但它们之间的实际区别是什么?有没有我们有时使用Fixnum,有时使用Integer的用例?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-27 11:47:08

您永远不会“使用”Integer。它是一个抽象类,其工作是为其子类(FixnumBignum)赋予方法。实际上,在任何情况下,您都不会在请求对象的类时被告知它是一个Integer

票数 43
EN

Stack Overflow用户

发布于 2014-01-29 00:28:19

更新:从Ruby2.4开始,FixnumBignum类都消失了,只剩下Integer。完全相同的优化仍然存在,但它们被视为“适当的”编译器优化,即在幕后,程序员看不见。

这有点令人困惑。Integer是你应该考虑的真正的类。Fixnum基本上是一种性能优化,从一开始就不应该让程序员看到。(这与YARV中的flonum相比,后者完全作为VM中的优化实现,从不向程序员公开。)

基本上,Fixnum是快的,而Bignum是慢的(Er),并且实现会自动在它们之间来回切换。你永远不会直接要求其中的一个,你只会得到一个或另一个,这取决于你的整数是否适合Fixnum的限制大小。

票数 84
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21372649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档