我是一名刚开始学习Ruby的Java开发者。 Ruby有原始类型吗?我找不到它们的列表。如果没有,为什么?
Ruby的核心原则之一是所有数据都应该表示为对象。其他语言如Smalltalk也遵循类似的范例。
这个设计的好处是使Ruby更加优雅,更容易学习。对象的规则在Ruby中得到了一致的应用。
例如,当初学Java时,原始类型int和包装类Integer之间的差异可能会令初学者感到困惑。通过自动装箱实现的两者之间有时候会产生令人困惑的隐式转换,这种困惑更加严重。
那么,为什么像Java或C#这样的语言还要使用基本类型呢?答案是性能。与原始类型相比,创建对象会带来额外的开销。
5.object_id
与5902123.object_id
不同。它们是两个不同的Fixnum对象。 - tadman 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
1.method(:+).class
并获得Method
,但是{}.method(:=>).class
会出现语法错误。这似乎表明……不是所有东西都是对象? - Ziggy=>
不是 Hash 上的一个方法。但是 {}.method(:[]).class
返回 Method
,正如你所期望的那样。因此,如果你将语法中的奇怪部分、空格、保留字等包括在“everything”中,那么不是 everything 在 Ruby 中都是对象,这有点过分要求了。 - zeteticRuby没有原始数据类型,因为Ruby是一种纯粹的面向对象语言。基本上,它有像其他语言一样的数据类型,但这些数据类型是类似Java中的集合类。
如果您定义任何字符串值,例如"Akshay",那么它就是一个对象。您可以查看下面的图片,在其中"Akshay"具有对象ID 30300。请单击链接检查Rails控制台上的对象。从图片中的更多示例中,我们可以得出结论:Ruby除关键字外的所有内容都是对象。