[前][次][番号順一覧][スレッド一覧]

ruby-reference-manual:1988

From: Nobuhiro IMAI <nov@y...>
Date: Sat, 27 Feb 2010 23:57:30 +0900 (JST)
Subject: [ruby-reference-manual:1988] Re: [Bug #2800] IO.new の第2引数デフォルト

いまいです。

From: Kouya <kouyataifu4_at_gmail.com>
Date: Sat, 27 Feb 2010 23:12:44 +0900

> kouyaです。
> 
> http://redmine.ruby-lang.org/issues/show/2800のリンク先をざっと読んだのですが、
> リファレンスにおいて直す要素は、
> 
> * 1.8,1.9 のIO.newの第二引数を省略した場合は、そもそも”r” ではないので、リファレンスのバグである。
> ** IO.newの第二引数を省略した場合は、C言語レベルでのfcntl関数(もしくはgetfl関数?)が定義されている環境では、
>    第一引数のfdのモードを継承するが、当該関数が存在しない環境では"r" となる。
> 
> * IO.newにおいて、書き込みモードを読み込みモードにするような操作が検出された場合は例外をだす。
> 
> といった感じなのかもしれません。

ありがとうございます。複数の条件でデフォルトが決まるのですね。

> ちなみに、下記スクリプトを実行したら、1.9.1-p0のみ、例外に関する挙動が違うようです。

この EBADF になるというのが、元のバグ報告(#1582)での問題点だったんでしょ
うね。報告された時期(2009年06月06日)的に、

> ruby 1.9.1p0 (2009-01-30 revision 21907) [i386-darwin9.6.0]
> ab.rb:4:in `gets': Bad file descriptor (Errno::EBADF)
> 	from ab.rb:4:in `<main>'
> ##End Of ruby-1.9.1

↑と↓の間なので。

> ruby 1.9.2dev (2009-12-05 trunk 26005) [x86_64-darwin10.2.0]
> ab.rb:3:in `initialize': Invalid argument (Errno::EINVAL)
> 	from ab.rb:3:in `new'
> 	from ab.rb:3:in `<main>'
> ##End Of ruby-trunk

こういった、第一引数の影響を受けるようなデフォルト値を持った第二引数と
いうのは、

--- IO.new(fd, [mode]) -> IO

とした上で、後は上に書いていただいたような説明を追加、という感じでしょ
うか?
--
Nobuhiro IMAI <nov@y...>
Key fingerprint = F39E D552 545D 7C64 D690  F644 5A15 746C BD8E 7106

--
ML: ruby-reference-manual@m...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

      1986 2010-02-27 04:02 [redmine@r...        ] [Bug #2800] IO.new の第2引数デフォルト  
      1987 2010-02-27 15:12 ┗[kouyataifu4@g...    ]                                       
->    1988 2010-02-27 15:57  ┗[nov@y...            ]                                     
      1989 2010-02-27 16:44   ┗[kouyataifu4@g...    ]                                   
      1990 2010-03-01 02:24    ┗[zn@m...             ]                                 
      1991 2010-03-01 18:49     ┗[nov@y...            ]                               
      1992 2010-03-03 04:37      ┣[redmine@r...        ] [Bug #2800](Closed) IO.new の第2引数デフォルト
      1993 2010-03-03 04:42      ┗[nov@y...            ]                             
      1994 2010-03-03 17:34       ┗[kouyataifu4@g...    ]                           
      1995 2010-03-05 14:27        ┗[nov@y...            ]                         
      1997 2010-03-06 02:28         ┗[kouyataifu4@g...    ]                       
      1998 2010-03-06 05:52          ┗[nov@y...            ]