Ruby中有原始类型吗?

时间:2013-09-13 15:50:28

标签: ruby primitive

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

4 个答案:

答案 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)

引自About Ruby

  

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

     

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

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

答案 3 :(得分:3)

ruby 中没有原始数据类型。因为 ruby​​ 是一种纯面向对象的语言。基本上,和其他语言一样有数据类型,但这些数据类型是java中类似集合的类。

如果您定义任何字符串值,例如“Akshay”,那么它就是一个对象。您可以查看下图,其中“Akshay”的 object_id 为 30300。请单击链接以查看 rails 控制台上的对象。从图片中的更多示例中,我们可以确定除关键字外,一切都是ruby中的对象。

所以在这里我们可以得出结论 ruby​​ 将这些原始数据类型转换为类。

Ruby console having primitive data as object