Ruby如何确保每个数字只有一个实例?

时间:2018-01-26 14:14:55

标签: ruby

假设我有这个简单的代码:

a = 1
b = 1

ruby​​是否通过跟踪数字来确保只有一个数字实例(因此ab将引用内存中的同一个对象)或仅阻止用户通过方法{{1并复制/克隆它们?

1 个答案:

答案 0 :(得分:4)

a = 1
b = 1

ab都指向同一个对象。

p a.object_id 
 => 3

p b.object_id
 => 3

因此,当您比较ab时,Ruby会比较对象ID(与符号一样),从而使比较效果更佳。

有趣的是,object_id的整数总是奇怪的。其他一切都有对象ID。

请注意Holger下面的评论,其中有关于大整数的详细信息。