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... ]