浏览 2387 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-03-04
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在每次对变量赋值时会遍历内存? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-03-05
你可以理解成
c="2" a=c b=c a==b a.equal?b 这个和ruby的内存模型有关系吧, try 2.object_id |
|
返回顶楼 | |
发表时间:2007-03-06
参看《Programming Ruby 2nd》英文版p37-38
|
|
返回顶楼 | |