Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在 Ruby 中,我可以做一些类似 C 的事情,像这样(使用我虚构的运算符'&'):
a = [1,2,3,4] and b = &a[2], b => [3,4], 如果我设置 b[0] = 99, a => [1,2,-9, 4]?
如果数组的元素是整数,Ruby 是否需要将它们连续存储在内存的连续部分中?我猜“不”,只存储地址,整数是对象,就像 Ruby 中的所有其他东西一样。
如果#2 的答案是“是”(我对此表示怀疑),是否有一种方法可以有效地移动内存块,例如在 C 中可以做到的那样。
Ruby 中没有内置这样的功能(Ruby 数组不是由 cons 单元构建的,获取地址比 Ruby 操作的级别要低得多),但老实说,编写这样的东西并不难。
回答第二个问题:它不一定是一个连续的整数数组。MRI 将整数视为立即值(最低有效位作为标志,指示单词是表示整数还是对象地址),因此它可能会以这种方式存储它。其他实现以自己的方式进行。