假设我有这个简单的代码:
a = 1
b = 1
ruby是否通过跟踪数字来确保只有一个数字实例(因此a
和b
将引用内存中的同一个对象)或仅阻止用户通过方法{{1并复制/克隆它们?
答案 0 :(得分:4)
a = 1
b = 1
a
和b
都指向同一个对象。
p a.object_id
=> 3
p b.object_id
=> 3
因此,当您比较a
和b
时,Ruby会比较对象ID(与符号一样),从而使比较效果更佳。
有趣的是,object_id的整数总是奇怪的。其他一切都有对象ID。
请注意Holger下面的评论,其中有关于大整数的详细信息。