我是一名刚刚开始学习Ruby的Java开发人员。 Ruby有没有原始类型?我似乎找不到它们的清单。如果没有,为什么?
答案 0 :(得分:31)
Ruby的核心原则是所有数据都应该表示为对象。其他语言如Smalltalk遵循类似的范例。
这种设计的好处是它使Ruby更优雅,更容易学习。适用于对象的规则始终适用于所有Ruby。
例如,当初学者首次学习Java时,基本类型int和包装类Integer之间的区别可能会令人困惑。通过自动装箱这两者之间有时令人困惑的隐含转换加剧了这种混乱。
那么为什么像Java或C#这样的语言会受到原始类型的困扰?答案是表现。与基元相比,创建对象会产生额外的开销。
答案 1 :(得分:15)
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
答案 2 :(得分:5)
在Ruby中,一切都是对象。每一点信息和代码都可以给出自己的属性和动作。
在许多语言中,数字和其他基本类型不是对象。 Ruby通过为所有类型提供方法和实例变量来遵循Smalltalk语言的影响。这简化了对Ruby的使用,因为应用于对象的规则适用于所有Ruby。
Java选择保留一些原始类型主要是为了提高性能,但你不得不承认,并不是每个类都是类,有时会使Java代码有点尴尬。 Ruby的哲学是让程序员的日子变得更容易,我认为将一切都变成对象是实现这一目标的一种方式。
答案 3 :(得分:3)
ruby 中没有原始数据类型。因为 ruby 是一种纯面向对象的语言。基本上,和其他语言一样有数据类型,但这些数据类型是java中类似集合的类。
如果您定义任何字符串值,例如“Akshay”,那么它就是一个对象。您可以查看下图,其中“Akshay”的 object_id 为 30300。请单击链接以查看 rails 控制台上的对象。从图片中的更多示例中,我们可以确定除关键字外,一切都是ruby中的对象。
所以在这里我们可以得出结论 ruby 将这些原始数据类型转换为类。