以下,
a={a:{b:{c:[]}}}
d=a[:a][:b][:c]
d=[1]
如何d
指向a[:a][:b][:c]
,以便在我更改d
时,a[:a][:b][:c]
也会更改?
a[:a][:b][:c] # => []
答案 0 :(得分:3)
您应该更改数组对象,而不仅仅是为变量分配一个新数组。
使用
d.push 1
或
d[0] = 1
或
{{1}}
等等。
答案 1 :(得分:2)
这里的其他答案都很好,但让我们来看看你的代码:
d=a[:a][:b][:c]
puts d #[]
d=[1]
puts d #[1]
请记住,当您分配d=[1]
之前,您在分配方面所做的一切都将丢失。当事情看起来很奇怪时,关于你如何分配一个变量的事情,以及你是否意外地重新分配它就像你一样。
因此,您可以看到正确的作业,例如:
d[0]=1
将执行您想要的操作,因为[0]
索引是您之前分配的要更改的内容。
希望这会有所帮助 - 如果您需要进一步澄清,请发表评论。
答案 2 :(得分:0)
分配给a[:a][:b][:c]
,而不是d
。
a[:a][:b][:c] = [1]