From: Koji Arai Date: 1999-01-18T06:04:11+09:00 Subject: [ruby-list:11590] Re: Array.new([SIZE]) 新井です。 >>> From: Yoshinori Toki >>> Date: Sun, 17 Jan 1999 20:39:18 +0900 >>> Subject: [ruby-list:11587] Array.new([SIZE]) > - Class Method on `Array': new ([SIZE]) > あらかじめ内部的な領域を`size'個分だけ確保して配列を生成します. > SIZEを省略した場合のデフォルトは16です. > > と書かれていて、わたしは Array.new(8) などと実行すると前もって 8 個の > オブジェクトを格納するメモリを確保した長さ 0 の配列が作られると解釈し > たのですが、実際にやってみると > > irb(main):014:0> Array.new(8) > [nil, nil, nil, nil, nil, nil, nil, nil] > > となって、長さが 0 ではなく 8 の配列ができます。 > これはバグ(ruby またはマニュアルの)だと思うんですけど。 今は、 $ ruby -e 'p Array.new(8, 1)' [1, 1, 1, 1, 1, 1, 1, 1] と、初期値設定も出来るようなので、マニュアルのバグかな? 昔は、土岐さんのいわれるとおりの仕様だったので途中 で変わったのでしょう(知らなかったです)。 個人的には、昔の仕様の方がよかったかなと思います。 逆に、あらかじめ領域だけ確保する方法はなくなったの かな? # 私のtexinfo版を参照していただいているようなので # コメントしました(^^;