类似于变量的引用
Something like reference to the variable
我该如何在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
时,链接断开。
相关文章:
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- 多个"常量引用"变量可以共享同一个内存吗?
- 在 gtest 中初始化堆栈上的引用变量的隔离错误
- C++方法中的引用变量
- 作为赋值(增加引用变量)C++的左操作数所需的左值
- 使用更改此变量的函数在同一行中打印引用变量
- 将延迟变量分配给引用变量
- 如何通过引用获取引用变量的地址?
- 将引用变量传递给函数
- C++中引用变量的内存?
- 按名称存储和引用变量列表
- 返回一个C++引用变量 VS 返回一个变量
- c++ 在 if 语句中分配引用变量
- 引用变量何时合适,为什么?你能解释一下实际的语法和位置吗?
- C++ - 将一个变量分配给另一个变量和将变量分配给引用变量有什么区别?
- 在类范围内声明时,应在 C++14 中引用变量模板
- 当引用变量的引用"死亡"时,它会发生什么?
- 将非按引用变量分配给返回按引用的函数,反之亦然
- 引用变量如何存储在mem中
- 引用变量存储在哪里