From: Yoshiki WADA Date: 1998-11-21T09:42:38+09:00 Subject: [ruby-list:10999] Re: gets のクラス 和田です。 From: matz@netlab.co.jp (Yukihiro Matsumoto) Subject: [ruby-list:10982] Re: gets のクラス Date: Fri, 20 Nov 1998 11:28:19 +0900 > でしたら,以下のようなコードはどうでしょう. > > class NewIO > def NewIO.open(*args) > new(open(*args)) > end (省略) > end > ただし,今書き殴っただけで実行さえしてませんからミスはあるか > も.概念だけ吸収して下さい. 私には概念だけ吸収することさえ難しい・・・。 Ruby本があればなあ・・・。 勝手に催促してもうしわけありません。 教えていただいた例を実行してみると、 new(open(*args)) のところで実行時エラーが出ました。 ここでは組み込みのopenを呼び出そうとしているのですよね。 でも実際は自分自身であるNewIO.open(*args)を呼び出していて、 'stack level too deep (SystemStackError)'になりました。 最近まさしくこれに関連した質問をしたところでして、 そのときに教えていただいたsuperを使ってみました。 new(super) とすればうまくいきました。 > 関数的に使う方のgetsはKernelモジュールで定義されてます.でも > これは継承しなくても使えますよん.継承は重要な概念ですが,そ > んなにこだわらなくても良いと思います. > # 継承は最後の武器だ……それじゃ忍者部隊月光か 忍者部隊月光は知りませんでした。 ところで、O'ReillyのRuby本の表紙を忍者にするってのはどうでしょう。 Ruby本が英語で出版され、アメリカの書店に忍者の表紙の本があったら、 結構目立ったりしないでしょうか。 でも忍者は人を斬ったりして暴力的だからだめですかね。