Ruby中有原始类型吗?

我是一名刚刚开始学习Ruby的Java开发人员。 Ruby有没有原始类型? 我似乎无法找到它们的清单。 如果没有,为什么?

Ruby的核心原则是所有数据都应该表示为对象。 其他语言如Smalltalk遵循类似的范例。

这种设计的好处是它使Ruby更优雅,更容易学习。 适用于对象的规则始终适用于所有Ruby。

例如,当初学者首次学习Java时,基本类型int和包装类Integer之间的区别可能会令人困惑。 通过自动装箱这两者之间有时令人困惑的隐含转换加剧了这种混乱。

那么为什么像Java或C#这样的语言会受到原始类型的困扰? 答案是表现。 与基元相比,创建对象会产生额外的开销。

Ruby中没有原始数据类型。 每个值都是一个对象,甚至文字都变成了对象:

 nil.class #=> NilClass true.class #=> TrueClass 'foo'.class #=> String 100.class #=> Integer 0x1a.class #=> Integer 0b11010.class #=> Integer 123.4.class #=> Float 1.234e2.class #=> Float 

这允许您编写漂亮的代码:

 3.times do puts "Hello from Ruby" end 

引自关于Ruby

在Ruby中,一切都是对象。 每一点信息和代码都可以赋予它们自己的属性和动作。

在许多语言中,数字和其他基本类型不是对象。 Ruby通过为所有类型提供方法和实例变量来遵循Smalltalk语言的影响。 这简化了对Ruby的使用,因为应用于对象的规则适用于所有Ruby。

Java选择保留一些原始类型主要是为了性能,但你不得不承认,并不是每个类都是一个类,有时会使Java代码有点尴尬。 Ruby的哲学是让程序员的日子变得更容易,我认为将一切都变成对象是实现这一目标的一种方式。