1
  1. Rubyでは、次のようにCのようなことを行うことができますか(作成した演算子「&」を使用):

    a =[1,2,3,4]および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 の配列はコンス セルで構築されておらず、アドレスの取得は Ruby の動作よりもはるかに低いレベルです) が、正直なところ、そのような機能を記述することは難しくありません。

2 番目の質問に答えるには: 連続した整数の配列である必要はありません。MRI は整数を即値として扱います (最下位ビットは、単語が整数またはオブジェクト アドレスを表すかどうかを示すフラグとして)。したがって、おそらくそのように格納します。他の実装は独自の方法でそれを行います。

于 2010-08-12T04:05:39.983 に答える