From: Wakou Aoyama Date: 1999-07-18T02:37:21+09:00 Subject: [ruby-dev:7355] Re: Ruby 1.3.5 青山です。 Fri, Jul 16, 1999 at 02:30:09PM +0900 において Wakou Aoyama さん曰く: > Fri, Jul 16, 1999 at 11:03:37AM +0900 において > Yukihiro Matsumoto さん曰く: > > > つまり、全部読み込んで来るメソッドだからいきなりEOFなら空文 > > 字列だろうという論理です。 > io.read # "foo" > io.read # nil > io.read # nil > > ファイルサイズが 0 の場合はあの箇所の前ですでに "" を返してしまってい > ますから、常に "" となるのですが、どちらかというと、上記の例のような動 > 作にあわせ、初回のみ "" を返し、2回目以降は nil というのが良さそうで > すが、いかがでしょうか。 > > ただ、ファイルサイズが 0 の場合、それをどうやるかですね。 io.read # "" io.read # nil io.read # nil という案のつもりでしたが、アクセスカウンタを用意する方法ぐらいしか思い 付きませんし、その方法はあまり嬉しくないので、0 バイトの読み込みは "" を返すというのはどうでしょうか。 io.read # "" # == io.read(0) io.read # "" # == io.read(0) io.read # "" # == io.read(0) --- io.c.org Fri Jul 16 06:43:14 1999 +++ io.c Sun Jul 18 02:09:54 1999 @@ -449,6 +449,7 @@ } len = NUM2INT(length); + if (len == 0) return rb_str_new(0, 0); GetOpenFile(io, fptr); rb_io_check_readable(fptr); -- 青山 和光 Wakou Aoyama