为什么我可以这样改变“自我”:
self.map! {|x| x*2}
或者这样:
self.replace(self.map {|x| x*2})
但不是这样:
self = self.map {|x| x*2}
为什么 Ruby 不允许我更改“self”变量指向的对象,但允许我更改对象的属性?
不是答案,只是一个线索。
a=[1,2]
=>[1,2]
a.object_id
=>2938
a.map!{|x| x*2}
=>[2,4]
a.object_id # different data but still the same object
=>2938
a.replace(a.map {|x| x*2})
=>[4,8]
a.object_id # different data but still the same object
=>2938
a = a.map{|x| x*2} # .map will create a new object assign to a
=>[8,16]
a.object_id #different object
=>2940
你无法将自己变成另一个人。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)