From: kjana@... (YANAGAWA Kazuhisa) Date: 2001-07-20T12:44:14+09:00 Subject: [ruby-dev:13948] Re: IO#read In message <861yncu885.wl@archon.local.idaemons.org> knu@iDaemons.org writes: >  IO#read を使って何度もストリームから読み込むような処理をする > とき、今のように毎回文字列オブジェクトを生成してそこに読み込んで > 返すのは結構コストが大きいようです。 なんですよね.むかし固定長の String 渡してそこに読み込ませる,なんてい うのを提案したこともありました. # 一応実装もしました # `buf = "\0"*256; $stdin.read_in(buf)' なんていう風に使う.....ちゃん # と使ったことはないのでバグってるかも. その時の話では名前とインタフェース,そしてそもそもそれが本当にいるのか どうか,というのが問題として出ました. 私の proposal だと「複数回にわたるブロック単位のバイナリデータの読み込 み」に特化しているのであんまり強く必要性を主張するわけでもなく,まあそ れはそれまで,で終わりました :-) # GC 以前に thrashing でかたまるメモリの足りないマシンでしか必要性が見 # えてこないし :-P >  そこで質問なのですが、こういうインターフェースは邪道でしょうか? > あるいは IO にバッファをアサインするようなメソッドを考えるべき? Ruby 的には receiver 以外のものを modify する,っていうのはあんまり無 いですよね.前の時の問題も,一つはそれ.だからといって String に IO 渡 して read するメソッドを付け加えるのもなんだか変は変. String 以外のオブジェクトに読み込めても後の処理ではうれしくないんです よね.そうすると余分なオブジェクトを介在させずに機能を良く表現するイン タフェースは IO のメソッドで引数に String をとり,引数を modify するっ ていうのが一番な気はします. # で,read では例外的な機能を表現していないからっていって,考えたあげ # くが read_in ではだめだめな :-P -- 柳川和久 @ 東大阪市 . 大阪府 July 20, 2001 What can't be cured must be endured.