Ruby(1.8.7〜1.9.0)の配列の末尾には見えない要素があるらしい。kzakzaコンテンツへスキップ☰ArchiveskzakzaRuby(1.8.7〜1.9.0)の配列の末尾には見えない要素があるらしい。kzakza少し細かい話を・・・・。配列要素の書き換え」(p353)にsliceメソッドの解説に以下のようなサンプルコードが掲載されています。[2,3,6,7,nil]に[/ruby]1行目から8行目まではよくわかるのですが、9行目と11行目がよく理解できませんでした。同じ配列の範囲外を指定しているのに、なぜ9行目が空の配列を返し、11行目がnilを返してくるのかと。当然ですが、クラスも異なります。う~ん、よくわからん。いう感じで見えないnilの値でも入っているのだろうかと、眠れない夜が続いていた(嘘)のですが、Rubyに詳しい方にこの件についてお尋ねする機会があったので伺ってみると、配列には見えない形で末尾に配列の末端であることを示すデータが入っているらしいのだそうです。C言語で書かれているのでその実装上の問題とか・・。C言語はよくわかりませんが、そうなんですか・・・。空の配列を返すのだそうです。以下の■の部分のような配列の外を第一引数が指してしまうので、nilが返ってくるということになるらしい。私のMacでは以下のようになります。a配列に5番目の要素に”nil”が追加されたりはしません。1.8.7を使用しています。『プログラミング言語Ruby』は1.9.0までフォローしています。この辺はRubyの実装環境の違いなんでしょうか・・・。1.9.2だとArgumentErrorを返すようです。バグとして修正されたのでしょうか。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。