Forum: Ruby-dev [ruby-trunk - Bug #7529][Open] キーワード引数を使うと最後のほうの通常の引数にハッシュを渡せない?

Posted by ngoto (Naohisa Goto) (Guest)
on 2012-12-06 17:54
(Received via mailing list)
Issue #7529 has been reported by ngoto (Naohisa Goto).

----------------------------------------
Bug #7529: キーワード引数を使うと最後のほうの通常の引数にハッシュを渡せない?
https://bugs.ruby-lang.org/issues/7529

Author: ngoto (Naohisa Goto)
Status: Open
Priority: Normal
Assignee:
Category:
Target version:
ruby -v: ruby 2.0.0dev (2012-12-06) [x86_64-linux]


 def foo(h, k: 0)
   p [ h, k ]
 end
 h = { 1=> 2 }
 foo(h)

を実行すると
 ArgumentError: unknown keyword: 1
のエラーが出ますが、hがハッシュの場合に、キーワードkのデフォルト値を保ったまま、fooにhを渡すことができないのは仕様でしょうか?

間に省略可能な通常の引数を入れて、

 def foo2(h, dummy = nil, i: 0)
   p [ h, dummy, i ]
 end
 h = { 1=> 2 }
 foo2(h)

とやっても同様に
 ArgumentError: unknown keyword: 1
が出てしまいます。(r38235 にて実行)
Posted by matz (Yukihiro Matsumoto) (Guest)
on 2012-12-06 19:34
(Received via mailing list)
Issue #7529 has been updated by matz (Yukihiro Matsumoto).


残念ながら仕様です。キーワードのためのハッシュと純粋に引数であるハッシュの区別はできないので。
末尾に {} を追加するくらいでしょうか。

Matz.

----------------------------------------
Bug #7529: キーワード引数を使うと最後のほうの通常の引数にハッシュを渡せない?
https://bugs.ruby-lang.org/issues/7529#change-34490

Author: ngoto (Naohisa Goto)
Status: Open
Priority: Normal
Assignee:
Category:
Target version:
ruby -v: ruby 2.0.0dev (2012-12-06) [x86_64-linux]


 def foo(h, k: 0)
   p [ h, k ]
 end
 h = { 1=> 2 }
 foo(h)

を実行すると
 ArgumentError: unknown keyword: 1
のエラーが出ますが、hがハッシュの場合に、キーワードkのデフォルト値を保ったまま、fooにhを渡すことができないのは仕様でしょうか?

間に省略可能な通常の引数を入れて、

 def foo2(h, dummy = nil, i: 0)
   p [ h, dummy, i ]
 end
 h = { 1=> 2 }
 foo2(h)

とやっても同様に
 ArgumentError: unknown keyword: 1
が出てしまいます。(r38235 にて実行)
Posted by matz (Yukihiro Matsumoto) (Guest)
on 2012-12-06 19:34
(Received via mailing list)
Issue #7529 has been updated by matz (Yukihiro Matsumoto).

Status changed from Open to Rejected


----------------------------------------
Bug #7529: キーワード引数を使うと最後のほうの通常の引数にハッシュを渡せない?
https://bugs.ruby-lang.org/issues/7529#change-34491

Author: ngoto (Naohisa Goto)
Status: Rejected
Priority: Normal
Assignee:
Category:
Target version:
ruby -v: ruby 2.0.0dev (2012-12-06) [x86_64-linux]


 def foo(h, k: 0)
   p [ h, k ]
 end
 h = { 1=> 2 }
 foo(h)

を実行すると
 ArgumentError: unknown keyword: 1
のエラーが出ますが、hがハッシュの場合に、キーワードkのデフォルト値を保ったまま、fooにhを渡すことができないのは仕様でしょうか?

間に省略可能な通常の引数を入れて、

 def foo2(h, dummy = nil, i: 0)
   p [ h, dummy, i ]
 end
 h = { 1=> 2 }
 foo2(h)

とやっても同様に
 ArgumentError: unknown keyword: 1
が出てしまいます。(r38235 にて実行)
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.