ruby - 如何在 Ruby 中替换对象?

标签 ruby arrays reference

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

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

如何替换 reference 指向的对象,例如。 “4”?我需要一些可以与任意对象一起使用的通用东西,而不是 String#gsub! 和 friend 。类似Object#replace(other_obj)

最佳答案

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

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

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

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

很抱歉,这里的术语“引用”如此重载。这是对英语的可怕滥用,但英语本身就是对英语的滥用:)

关于ruby - 如何在 Ruby 中替换对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26951380/

相关文章:

php - 如何更改数组的顺序?

c++ - 字符串引用(函数)的差异

ruby-on-rails - ruby rails : Validate CSV file

c - 为什么我得到 "Header file missing"(出错)?

ruby - 更惯用的 ruby​​ 写法 @var = obj ['blah' ] 除非 obj ['blah' ].nil?

c++ - 使用 foreach 迭代多维数组

c# - "1 item from each of N collections"的每个组合

javascript - 如何存储对刚刚插入的 div 的引用

.net - 我应该如何使用 Git 在多台计算机上的 SharpDevelop 项目中使用 SQL Server Compact Edition?

ruby-on-rails - 如何使用 NGINX 反向代理将蜻蜓图像保存到远程服务器?