论坛首页 编程语言技术论坛

为什么a,b如果同时赋给相同的值,他们会指向同一地址?

浏览 2387 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-03-04  
在irb中
a=2
b=2
a==b
->true
m.equal?a
->true
a.object_id
->5
b.object_id
->5
b=6
b.object_id
->13
a==b
->flase
a.equal?b
->flase
b=2
b.object_id
->5
a==b
->true
m.equal?a
->true

为什么a,b如果同时赋给相同的值,他们会指向同一地址?
equal? True if the receiver and argument have the same object ID.
object_id
Returns an integer identifier for obj. The same number will be returned on all calls to object_id for a given object, and no two active objects will share an ID.Object#object_id is a different concept from the :name notation, which returns the symbol ID of name. Replaces the deprecated Object#id.
以上Programming Ruby关于equal?和object_id的解释
我认为objcet_id是一个对象的标识,如果两个对象object_id相同则他们内存的存储是一样,不知道为什么是这样,难道ruby在每次对变量赋值时会遍历内存?
   发表时间:2007-03-05  
你可以理解成
c="2"
a=c
b=c
a==b
a.equal?b

这个和ruby的内存模型有关系吧, try
2.object_id
0 请登录后投票
   发表时间:2007-03-06  
参看《Programming Ruby 2nd》英文版p37-38

0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics