如何在Ruby中替换对象?

如何在Ruby中替换对象?,ruby,arrays,reference,Ruby,Arrays,Reference,假设我有一些深度嵌套的数组结构和对其中一个对象的引用: strings = ["1", "2", " 3"] nested = [[strings] * 10] * 10 reference = nested[0][0][0] 如何将对象引用指向替换为例如“4”?我需要一些通用的东西来处理任意对象,而不是String#gsub和朋友。类似于Object#replace(other_obj)的东西你不能,我们在Ruby中没有(显式)指针,我们有(隐式)引用,但你不能取消引用它们来搞乱它们所包含的

假设我有一些深度嵌套的数组结构和对其中一个对象的引用:

strings = ["1", "2", " 3"]
nested = [[strings] * 10] * 10
reference = nested[0][0][0]
如何将对象
引用
指向替换为例如
“4”
?我需要一些通用的东西来处理任意对象,而不是
String#gsub和朋友。类似于
Object#replace(other_obj)

的东西你不能,我们在Ruby中没有(显式)指针,我们有(隐式)引用,但你不能取消引用它们来搞乱它们所包含的内容。相反,您需要执行以下操作:

inner nested[0][0]
inner[0] = '4'
这样,您就可以使用要替换的元素的引用,而不是元素本身

当然,对于您问题中的结构,
内部[0]='4'
将替换
字符串的第一个元素(以及
嵌套的
的每个元素),因为它只是对
字符串
引用的同一数组的一堆引用


很抱歉,这里的术语引用太多了。这是对英语的严重滥用,但英语本身就是对英语的滥用:)

nested[0][0][0]=“4”
?你必须更清楚你的“任意对象”是什么,否则答案是:赋值。使用赋值将一个对象替换为另一个对象。另一个对象是某个对象,不一定是字符串!您将无法替换Ruby中的所有对象。例如,您将无法替换文字数字。此外,如果你也对某件事感兴趣的话,你不能把一个物体替换成另一个物体。是的,这就是我要问的。有可能吗?你能做的就是替换一些Ruby对象的内部状态。例如,见。其他几个对象也有
replace
方法,例如数组和散列。如果可以修改对象的内部状态,则可以在自己的对象上实现
replace
方法。