如何在Ruby中替换对象?

时间:2014-11-15 22:18:29

标签: ruby arrays reference

假设我有一些深层嵌套的数组结构和对内部对象的引用:

strings = ["1", "2", " 3"]
nested = [[strings] * 10] * 10
reference = nested[0][0][0]

如何将对象reference替换为例如。 "4"?我需要一些适用于任意对象的通用,而不是String#gsub!和朋友。类似于Object#replace(other_obj)

1 个答案:

答案 0 :(得分:2)

你不能,我们在Ruby中没有(显式)指针,我们有(隐式)引用,但你不能取消引用它们来混淆它们包含的内容。相反,你需要做类似的事情:

inner nested[0][0]
inner[0] = '4'

这样您就可以使用对要替换的元素的引用而不是元素本身。

当然,根据您问题中的结构,inner[0] = '4'将替换strings的第一个元素(以及nested的每个元素,因为它只是一堆引用strings引用的相同数组。

很抱歉引用这个术语的重载程度如何。这是一种可怕的英语滥用,但英语本身就是滥用英语:)