类似于变量的引用

Something like reference to the variable

本文关键字:引用 变量 类似于      更新时间:2023-10-16

我该如何在Ruby中执行此操作?
例如,在Ruby中:

a = [1,2,3]
h= {vara: a} 
p h[:vara] # [1,2,3]
a = [42,43,44]
p h[:vara] # [1,2,3] - still the same

哈希显示相同的结果(数组[1,2,3]),尽管我已更改a
至于此示例,当a更改时,我希望哈希显示不同的结果:

a = [1,2,3]
h= {vara: a} 
p h[:vara] # [1,2,3]
a = [42,43,44]
p h[:vara] # [42,43,44] - changed!

在一般情况下如何执行此操作 - 未指定变量或容器(在示例中的哈希)?

例如,在C 中,您可以使用参考

#include <iostream>
#include <stdlib>
int main(void)
{
   int a = 10;
   int &var = a;
   std::cout<< "na = "<< a <<"n";
   a = 42;
   std::cout<< "nnew var = " << var << "n"; //
   std::cout<< "nnew a = " << a << "n";
   system("pause");
   return 0;
}

将产生:

a = 10
new var = 42
new a = 42

Ruby中是否有类似的东西?

您只需用 Array方法替换CC_4实例的容器,因为=分配运算符仅个符合变量name 另一个实例

a = [1,2,3]
h = {vara: a} 
h[:vara]
# => [1,2,3]
a.replace [42,43,44]
h[:vara]
# => [42, 43, 44]

Ruby具有参考,但它们更像C 指针(带有透明的退化)。

无等效的C/C 参考。不过,您可以随时写一个C扩展。

您可以替换指向的内容,而不是完全替换" A" 参考本身

a = [1,2,3]
h= {vara: a} 
p h[:vara] 
a.replace([40, 41, 42]) # <== note here
p h[:vara] 
# >> [1, 2, 3]
# >> [40, 41, 42]

在这种情况下,h[:para]a仍指向同一数组。但是当您分配给a时,链接断开。