我是一名刚开始学习 Ruby 的 Java 开发人员。Ruby 有任何原始类型吗?我似乎找不到他们的名单。如果不是,为什么?
4 回答
Ruby 的一个核心原则是所有数据都应该表示为对象。Smalltalk 等其他语言也遵循类似的范例。
这种设计的好处是它使 Ruby 更优雅,更容易学习。适用于对象的规则始终适用于所有 Ruby。
例如,当初学者第一次学习 Java 时,原始类型 int 和包装类 Integer 之间的区别可能会令人困惑。有时通过自动装箱在两者之间进行令人困惑的隐式转换,加剧了这种混乱。
那么为什么像 Java 或 C# 这样的语言会使用原始类型呢?答案是性能。与基元相比,创建对象会产生额外的开销。
Ruby 中没有原始数据类型。每个值都是一个对象,即使是文字也会变成对象:
nil.class #=> NilClass
true.class #=> TrueClass
'foo'.class #=> String
:bar.class #=> Symbol
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 的理念是让程序员的日子更轻松,我认为让一切都成为对象是实现这一目标的一种方式。
ruby 中没有原始数据类型。因为 ruby 是一种纯粹的面向对象的语言。基本上,像其他语言一样有数据类型,但这些数据类型是java中的集合之类的类。
如果您定义任何字符串值,例如“Akshay”,那么它就是一个对象。您可以查看下图,其中“Akshay”的 object_id 为 30300。请单击链接以检查 rails 控制台上的对象。从图像中的更多示例中,我们可以确定除关键字之外的所有内容都是 ruby 中的对象。
所以在这里我们可以得出结论,ruby 将这些原始数据类型转换为类。