gpt4 book ai didi

ruby - 为什么我不能改变 self 的值(value)?

转载 作者:数据小太阳 更新时间:2023-10-29 07:06:06 26 4
gpt4 key购买 nike

为什么我可以这样改变“self”:

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

你不能把自己变成另一个。

关于ruby - 为什么我不能改变 self 的值(value)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25834446/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com