From: EGUCHI Osamu Date: 1997-09-19T15:50:55+09:00 Subject: [ruby-list:4442] Re: invalid index of Array えぐち です。 > まつもと ゆきひろです > > In message "[ruby-list:4440] Re: invalid index of Array" > on 97/09/19, "EGUCHI Osamu" writes: > > |えぐち です。 > > |> | + 'Fixnum[添字]' はエラーでないんですか? > |> > |> obj[idx]は`[]'という名前のメソッドを起動しているのですが, > |> Fixnum#[]というメソッドも定義されていてn番目のbitがセットさ > |> れているかどうかを返します. > | > |なるほど なるほど、でも左辺値ではないんですね、 > > そうなんです.[]=は定義していませんので代入はできません.数 > 値の場合オブジェクトそのものの状態を変更するわけにはいきませ > んから. あぁ、どうもインスタンスが値を持っているようなつもりでいましたが、 インスタンスは一種の参照をするための便宜上の名前なんですね。 > | + ソフトウェアスタックを作る。 > | or > | + オブジェクトに「マーク」する。 > | > |のような判別方法はとっさに考え付きました。 > | > |Array#inspect にパッチしてみました。マーク法です。 > > ありがとうございます.すぐにこういうパッチが出て来るなんてた > だものではないですね.^^;;; いえぃぇ、ruby より C を読み慣れてるだけです。 > でも,rubyにはスレッドがあるのでマーク法は使えないんです.残 > 念ですけど.同時に複数のスレッドが同一の配列をインスペクトし > たらダメですよね. > > |再帰的オブジェクトが参照されなくなってGCに掛かると > |恐くないですか? > > GCはマークしているのでこういう問題は起きないんです. 逆に、自己参照的なArray って、参照なくなっても 自分自身の参照でGCの対象にならなくてある種のリークに なるのでわ!?