From: "matz (Yukihiro Matsumoto)" Date: 2012-12-07T03:33:37+09:00 Subject: [ruby-dev:46713] [ruby-trunk - Bug #7529] キーワード引数を使うと最後のほうの通常の引数にハッシュを渡せない? 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 にて実行) -- http://bugs.ruby-lang.org/