可能重复:
Ruby 是按引用传递还是按值传递?
使用 Ruby,将对象传递给方法时,该对象的内存是如何处理的?
来自 C 背景,我可以想到可能发生的几件事:
与相应对象关联的内存副本,可供被调用的方法使用。在这种情况下,对象的修改只会反映在被调用方法的上下文中,而不是调用方法。
对对象内存的引用被传递给被调用的方法(本质上是一个指针)。因此,对象通过被调用的方法或调用方法所做的任何更改都将反映在两个上下文中。同样,如果该程序是多线程的,则必须使用某种机制(互斥量、信号量等)来确保对执行写入操作的内存的互斥访问。
还有一些我想不出来的东西……也许是类似于Go的内存模型……管道……消息传递……?
实际发生了什么?