[#2810] [BUG] IO#eof? when Thread using — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

31 messages 1998/06/08
[#2826] Re: [BUG] IO#eof? when Thread using — matz@... (Yukihiro Matsumoto) 1998/06/10

まつもと ゆきひろです

[#2827] Re: [BUG] IO#eof? when Thread using — keiju@... (石塚圭樹 ) 1998/06/10

けいじゅ@日本ラショナルソフトウェアです.

[#2828] Re: [BUG] IO#eof? when Thread using — matz@... (Yukihiro Matsumoto) 1998/06/10

まつもと ゆきひろです

[#2829] Re: [BUG] IO#eof? when Thread using — keiju@... (石塚圭樹 ) 1998/06/10

けいじゅ@日本ラショナルソフトウェアです.

[#2831] Re: [BUG] IO#eof? when Thread using — matz@... (Yukihiro Matsumoto) 1998/06/10

まつもと ゆきひろです

[#2841] Re: [BUG] IO#eof? when Thread using — keiju@... (石塚圭樹 ) 1998/06/10

けいじゅ@日本ラショナルソフトウェアです.

[#2842] Re: [BUG] IO#eof? when Thread using — matz@... (Yukihiro Matsumoto) 1998/06/10

まつもと ゆきひろです

[#2843] Re: [BUG] IO#eof? when Thread using — keiju@... (石塚圭樹 ) 1998/06/10

けいじゅ@日本ラショナルソフトウェアです.

[#2845] Re: [BUG] IO#eof? when Thread using — matz@... (Yukihiro Matsumoto) 1998/06/11

まつもと ゆきひろです

[#2846] Re: [BUG] IO#eof? when Thread using — keiju@... (石塚圭樹 ) 1998/06/11

けいじゅ@日本ラショナルソフトウェアです.

[#2847] Re: [BUG] IO#eof? when Thread using — matz@... (Yukihiro Matsumoto) 1998/06/11

まつもと ゆきひろです

[#2848] Re: [BUG] IO#eof? when Thread using — keiju@... (石塚圭樹 ) 1998/06/11

けいじゅ@日本ラショナルソフトウェアです.

[#2849] Re: [BUG] IO#eof? when Thread using — matz@... (Yukihiro Matsumoto) 1998/06/11

まつもと ゆきひろです

[#2854] experimental release 1.1b9_25 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

23 messages 1998/06/11
[#2870] Re: experimental release 1.1b9_25 — Takahiro Maebashi <maebashi@...> 1998/06/15

前橋です。

[#2911] experimental release 1.1b9_26 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

33 messages 1998/06/18
[#2912] Re: experimental release 1.1b9_26 — WATANABE Hirofumi <watanabe@...> 1998/06/18

わたなべです.

[#2913] Re: experimental release 1.1b9_26 — matz@... (Yukihiro Matsumoto) 1998/06/18

まつもと ゆきひろです

[#2916] Re: experimental release 1.1b9_26 — Takahiro Maebashi <maebashi@...> 1998/06/18

前橋です。

[#2917] Re: experimental release 1.1b9_26 — matz@... (Yukihiro Matsumoto) 1998/06/18

まつもと ゆきひろです

[#2940] experimental release 1.1b9_27 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

21 messages 1998/06/19

[#2965] feature freeze for 1.1c — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

25 messages 1998/06/22

[#3056] experimental release 1.1b9_28 — matz@... (Yukihiro Matsumoto)

subject says all.

28 messages 1998/06/26
[#3104] Re: experimental release 1.1b9_28 — Takahiro Maebashi <maebashi@...> 1998/06/30

前橋です。

[#3086] Re: Enumerable#reverse ([ruby-list:8579]) — gotoken@... (GOTO Kentaro)

ごとけんです

19 messages 1998/06/29
[#3120] Re: Enumerable#reverse ([ruby-list:8579]) — keiju@... (Keiju ISHITSUKA) 1998/06/30

けいじゅ@日本ラショナルソフトウェアです.

[#3130] Re: Enumerable#reverse ([ruby-list:8579]) — gotoken@... (GOTO Kentaro) 1998/06/30

ごとけんです

[#3146] [REQ] trace_func — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

15 messages 1998/06/30
[#3190] Re: [REQ] trace_func — matz@... (Yukihiro Matsumoto) 1998/07/02

まつもと ゆきひろです

[#3807] Re: [REQ] trace_func — keiju@... (石塚圭樹 ) 1998/12/14

けいじゅ@日本ラショナルソフトウェアです.

[ruby-dev:2888] Re: [BUG] IO#eof? when Thread using

From: matz@... (Yukihiro Matsumoto)
Date: 1998-06-16 09:59:25 UTC
List: ruby-dev #2888
まつもと ゆきひろです

しばらく考えてみたのですが,やっぱりよくわかんないところがあ
ります.

In message "[ruby-dev:2869] Re: [BUG] IO#eof? when Thread using"
    on 98/06/15, 石塚圭樹 <keiju@Rational.Com> writes:

|けいじゅ@日本ラショナルソフトウェアです.

|こっちのマニュアル(同じものと思いますが)では, 
|
|   If an error occurs, or the end-of-file is reached, the return
|       value is a short item count (or zero).
|
|となっていますので, lenより身近いときは, errorかEOFですので, その時は,
|
|       fread does not distinguish between end-of-file and  error,
|       and  callers  must  use feof(3) and ferror(3) to determine
|       which occurred.
|
|をやって下されば, まさに望んでいるものになりそうです.

えーと,これはfreadが0を返した時にエラーであるか,EOFである
か判別する方法について述べているのであって,lenより短い長さ
を読み込んだ時の話ではないです.直接はそうは読めないかも知れ
ませんが.

|>  * 現在のreadの仕様を使えばrubyで簡単に定義できるが,わざわ
|>    ざ組み込みメソッドにする必要があるか
|
|1.
|  getc/readchar
|  gets/readline
|
|の対象性からあった方が良い.

ま,EOFで例外を発生するreadの存在は否定しません.あるいは現
在のreadでEOFに対してnilでなくエラーを返すとか.

が,石塚さんの求めている「新read」は途中までしか読み込んでい
ない場合にもエラーを発生することを求めているわけで,それとは
また違う概念です.ここは明確に区別すべきだと思います.

|2. read(n)の時に毎回サイズをチェックしなければ, 正しいプログラムになら
|   ないのはめんどくさいことが多い.
|
|   *私なら*ですが, readよりも新readを絶対使いますね.

おっしゃることはわかります.そういうメソッドがあれば便利な局
面がある事も肯定します.が,freadのlen引数はもともとは読み込
むべきバッファの大きさを指定しているので,そのような挙動を
freadに対応させるのはかなり大胆ですよね.

で,もともとUNIXにあるモデルを大きく変更したものを標準にした
くないので,現在のような挙動のreadがなくなることはないと思い
ます.readという名前のメソッドの挙動が石塚さんの望むようなも
のになることも.

|3. 問題点
|
|readlineと新readって若干動作が違うんですね. readlineは読み込中にEOFが
|来るとそれまで読んでいたものを返しますが, 新readはそのサイズに満たなけ
|れば, 例外ですので...
|
|でも, 両方の使い方からいって, 総方ともそうなっている方が良いとは思いま
|すが...

えーと,getlineは長さを指定しないので「サイズに満たない」と
いう状況は発生しません.EOFに対して例外を発生することと,指
定した長さが確実に読まれたことを保証するのは別のことです.

ですから,考えるべきことは

 (a) readはEOFで例外を発生させるべきか(仕様変更)

 (b) もし,現在の仕様のままの場合,EOF例外を発生するread相当
     のメソッドは必要か.

 (c) bがyesの場合のメソッド名

 (d) 指定したサイズが読めなかった場合例外を発生するread相当
     のメソッドは(組込みメソッドとして)必要か

 (e) dがyesの場合のメソッド名

 (f) dがyesの場合,そのメソッドはEOFに対してnilを返すか,例
     外を起こすか(あるいは両方のメソッドを用意するか)

だと思います.
                                まつもと ゆきひろ /:|)

In This Thread