Ruby中有原始类型吗?

emi*_*ily 24 ruby primitive

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

dby*_*rne 32

A core principle of Ruby is that all data should be represented as objects. Other languages such as Smalltalk follow a similar paradigm.

The benefit of this design is that it makes Ruby more elegant and easier to learn. The rules applying to objects are consistently applied to all of Ruby.

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

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

  • 我的天啊!在 1 分钟或更短的时间内你写了这么多行......:) (2认同)
  • @tadman 你是对的;我错了。字符串的行为就是这样,所以我认为 fixnums 也是如此。 (2认同)

Ste*_*fan 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
Run Code Online (Sandbox Code Playgroud)

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

3.times do
  puts "Hello from Ruby"
end
Run Code Online (Sandbox Code Playgroud)


Yu *_*Hao 5

引自关于Ruby

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

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

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