在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
class Fixnum attr_accessor :value end x=1 p x.object_id x.value="Anleb" p x.value.object_id def change(x) p x.object_id p x.value.object_id x=2 #指针改变 x.value="Mr.w" p x.object_id p x.value.object_id #x改变的指针在这里被GC回收 end change x p x p x.value p x.object_id p x.value.object_id 打印 3 22950360 3 22950360 5 22950290 1 "Anleb" 3 22950360 这段代码好理解,因为这就是我们很平常的方法无法改变传递进去的值的案例,具体不说,原因都知道是 方法内部变量改变了指针,退出方法的时候,指针销毁,然后x回到顶级域x又是原来的指针。 def value=(value) @value=value end def value @value end 注意到没,返回的直接是@value,所以会修改对象里面的value值,不知道对不对希望高手来看看。 class Fixnum attr_accessor :value end x=1 p x.object_id x.value="Anleb" p x.value.object_id def change(x) p x.object_id p x.value.object_id #x=2 x.value="Mr.w" p x.object_id p x.value.object_id end change x p x p x.value p x.object_id p x.value.object_id #result: 3 5875824 3 5875824 3 5875704 1 "Mr.w" 3 5875704 大大们再论坛上已经把这个方法传递的是值,还是引用,都说尽了,这里不说基础了。
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论