1
  1. 在 Ruby 中,我可以做一些类似 C 的事情,像这样(使用我虚构的运算符'&'):

    a = [1,2,3,4] and b = &a[2], b => [3,4], 如果我设置 b[0] = 99, a => [1,2,-9, 4]?

  2. 如果数组的元素是整数,Ruby 是否需要将它们连续存储在内存的连续部分中?我猜“不”,只存储地址,整数是对象,就像 Ruby 中的所有其他东西一样。

  3. 如果#2 的答案是“是”(我对此表示怀疑),是否有一种方法可以有效地移动内存块,例如在 C 中可以做到的那样。

4

1 回答 1

2

Ruby 中没有内置这样的功能(Ruby 数组不是由 cons 单元构建的,获取地址比 Ruby 操作的级别要低得多),但老实说,编写这样的东西并不难。

回答第二个问题:它不一定是一个连续的整数数组。MRI 将整数视为立即值(最低有效位作为标志,指示单词是表示整数还是对象地址),因此它可能会以这种方式存储它。其他实现以自己的方式进行。

于 2010-08-12T04:05:39.983 回答