[#24536] 「Rubyの落し方」 v.s. ruby_1_8 — akira yamada / やまだあきら <akira@...>

<URL:http://jp.rubyist.net/magazine/?0002-RubyCore>

40 messages 2004/10/20
[#24541] Re: 「Rubyの落し方」 v.s. ruby_1_8 — Yukihiro Matsumoto <matz@...> 2004/10/20

まつもと ゆきひろです

[#24599] 1.8.2 preview3? — akira yamada / やまだあきら <akira@...> 2004/10/26

2004-10-20 (水) の 21:38 +0900 に Yukihiro Matsumoto さんは書きました:

[#24605] Re: 1.8.2 preview3? — akira yamada / やまだあきら <akira@...> 2004/10/27

2004-10-26 (火) の 16:16 +0900 に akira yamada / やまだあきら さんは書きました:

[#24606] Re: 1.8.2 preview3? — Yukihiro Matsumoto <matz@...> 2004/10/27

まつもと ゆきひろです

[#24608] Re: 1.8.2 preview3? — akira yamada / やまだあきら <akira@...> 2004/10/27

2004-10-27 (水) の 11:48 +0900 に Yukihiro Matsumoto さんは書きました:

[#24620] Re: 1.8.2 preview3? — akira yamada / やまだあきら <akira@...> 2004/10/27

2004-10-27 (水) の 12:42 +0900 に akira yamada / やまだあきら さんは書きました:

[#24629] Re: 1.8.2 preview3? — Tanaka Akira <akr@...17n.org> 2004/10/29

In article <1098888819.9446.14.camel@rice.p.arika.org>,

[ruby-dev:24449] Re: ARGF.read(len) and EOF

From: Yukihiro Matsumoto <matz@...>
Date: 2004-10-08 09:35:56 UTC
List: ruby-dev #24449
まつもと ゆきひろです

In message "Re: [ruby-dev:24444] ARGF.read(len) and EOF"
    on Thu, 7 Oct 2004 18:34:46 +0900, Tanaka Akira <akr@m17n.org> writes:

|次のように、ARGF.read(len) から読み込もうとしたときに、引数にファイル
|を指定しても標準入力から読もうとするようです。

|これは意図的な挙動でしょうか?

改めて考えてみたのですが、やっぱり現状があるべき動作なんじゃ
ないかなあという気がしてきました。

まず、readは決してnilを返しません。指定した長さ(または現状入
手可能なすべて)ぶんだけ読み込んで返します。EOFに当たると指定
した長さより短い文字列を返します。

ARGFは引数にファイルが指定されている時には、そのすべてを連結
した仮想的なファイルとして動作し、その仮想ファイルが(最後の
ファイルの)EOFに突き当たってからもう一度読もうとすると、今度
は改めて標準入力から読み込む、という動作になっています。

ですから、最初のARGF.read(4096)で仮想ファイルの全てを読み込
みEOFに突き当たり、次のARGF.read(4096)では標準入力から読み込
むのではないかと思います。ループする場合には

  loop do
    s = ARGF.read(4096)
    p s
    break if s.size < 4096
  end

のようになるのではないかと思います。

これでは使いにくいなどありましたら聞かせてください。

                                まつもと ゆきひろ /:|)

In This Thread