From: _ wanabe Date: 2012-02-21T23:00:54+09:00 Subject: [ruby-dev:45267] [ruby-trunk - Bug #6054][Open] IO.foreach を Enumerator 化したときキーワード引数が無視される Issue #6054 has been reported by _ wanabe. ---------------------------------------- Bug #6054: IO.foreach を Enumerator 化したときキーワード引数が無視される https://bugs.ruby-lang.org/issues/6054 Author: _ wanabe Status: Open Priority: Normal Assignee: Category: Target version: ruby -v: ruby 2.0.0dev (2012-02-21 trunk 34711) [i686-linux] http://toro.2ch.net/test/read.cgi/tech/1324826777/666-675 で指摘があったのですが 末尾に示すように、IO.foreach にブロックを渡さず Enumerator 化したときキーワード引数が無視されます。 上の書き込みによると "先にハッシュオプション取り除いてからEnumeratorを生成しちゃってるのでハッシュオプションがEnumeratorには反映されない" とのことでした。 rb_io_s_foreach 中の RETURN_ENUMERATOR を rb_scan_args より先にするべきではないか、ということのようです。 $ cat foo.rb p IO.foreach(__FILE__,mode:"a").next IO.foreach(__FILE__,mode:"a") {|l| p l } $ ruby -v foo.rb ruby 2.0.0dev (2012-02-21 trunk 34711) [i686-linux] "p IO.foreach(__FILE__,mode:\"a\").next\n" foo.rb:2:in `foreach': not opened for reading (IOError) from foo.rb:2:in `
' -- http://bugs.ruby-lang.org/