[#7300] resolver を呼ばない UDPsocket#recvfrom — Toshihiko SHIMOKAWA / 下川俊彦 <toshi@...>

あんまり ruby-dev な話でも無いのですが、ちょっとした機能拡張の提案なので、

12 messages 1999/07/12
[#7321] Re: resolver を呼ばない UDPsocket#recvfrom — Toshihiko SHIMOKAWA / 下川俊彦 <toshi@...> 1999/07/15

From: Toshihiko SHIMOKAWA / 下川俊彦 <toshi@csce.kyushu-u.ac.jp>

[#7313] Ruby 1.3.5 — Yukihiro Matsumoto <matz@...>

Ruby 1.3.5 is out, check out:

59 messages 1999/07/15
[#7318] Re: Ruby 1.3.5 — WATANABE Hirofumi <watanabe@...> 1999/07/15

わたなべです.

[#7326] Re: Ruby 1.3.5 — Wakou Aoyama <wakou@...> 1999/07/15

青山です。

[#7331] Re: Ruby 1.3.5 — matz@... (Yukihiro Matsumoto) 1999/07/16

まつもと ゆきひろです

[#7340] Re: Ruby 1.3.5 — Wakou Aoyama <wakou@...> 1999/07/16

青山です。

[#7368] Re: Ruby 1.3.5 — matz@... (Yukihiro Matsumoto) 1999/07/19

まつもと ゆきひろです

[#7373] Re: Ruby 1.3.5 — Shin-ichiro Hara <sinara@...> 1999/07/19

原です。

[#7374] Re: Ruby 1.3.5 — matz@... (Yukihiro Matsumoto) 1999/07/19

まつもと ゆきひろです

[#7382] Re: Ruby 1.3.5 — Wakou Aoyama <wakou@...> 1999/07/19

青山です。

[#7386] Re: Ruby 1.3.5 — matz@... (Yukihiro Matsumoto) 1999/07/21

まつもと ゆきひろです

[#7388] Re: Ruby 1.3.5 — Wakou Aoyama <wakou@...> 1999/07/21

青山です。

[#7387] [PATCH]extconf.rb, tcltklib.c, and rubytest.rb for NetBSD — Ryo HAYASAKA <hayasaka@...21.u-aizu.ac.jp>

早坂@会津大学です。

10 messages 1999/07/21

[#7466] [PATCH] for djgpp — WATANABE Hirofumi <watanabe@...>

わたなべです.

21 messages 1999/07/29
[#7467] Re: [PATCH] for djgpp — Katsuyuki Komatsu <komatsu@...> 1999/07/29

小松です。

[ruby-dev:7357] Re: Ruby 1.3.5

From: Shin-ichiro HARA <sinara@...>
Date: 1999-07-18 01:08:02 UTC
List: ruby-dev #7357
原です。

> 青山です。

> という案のつもりでしたが、アクセスカウンタを用意する方法ぐらいしか思い
> 付きませんし、その方法はあまり嬉しくないので、0 バイトの読み込みは ""
> を返すというのはどうでしょうか。
> 
> io.read  # ""     # == io.read(0)
> io.read  # ""     # == io.read(0)
> io.read  # ""     # == io.read(0)

私も既に EOF に達している io に対しての read は常に "" でいいのでは
ないかと思います。それはパラメータ無しの read を

  def read
    s = ""
    while t = read(1024)
      s.concat t
    end
    s
  end

と等価だと考えることですっきりするからです。(1024 はいいかげんです
が)

だから io が EOF に達しているならば、

io.read; io.read; io.read #=> "", "", ""

というのが望ましいと思います。

もっとも read が「残りすべてを読む」という意味を持っている事をユー
ザーが意識しているならば、read を複数呼ぶようなプログラムは書か
ないはずだと思うのだけどどうでしょうか。

一方、io が EOF に達している場合の read(0) は

(1) 0 バイトは読み込める大きさなのだから読んだ結果 "" を返すべき
(2) 読む前に EOF に達しているのだから nil を返すべき

と、2つの考え方があって、どちらももっともでそれぞれに得する事はある
と思います。しかし C のライブラリの慣習としては (2) だったような気がす
るので、

io.read(0); io.read(0); io.read(0) #=> nil, nil, nil

に一票入れます。


In This Thread