Project

General

Profile

Bug #7529

キーワード引数を使うと最後のほうの通常の引数にハッシュを渡せない?

Added by Naohisa Goto about 3 years ago. Updated about 3 years ago.

Status:
Rejected
Priority:
Normal
Assignee:
-
ruby -v:
ruby 2.0.0dev (2012-12-06) [x86_64-linux]
Backport:
2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN
[ruby-dev:46712]

Description

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 にて実行)

Associated revisions

Revision 38658
Added by Kazuki Tsujimoto about 3 years ago

  • test/ruby/test_keyword.rb: add a test for passing hash as a last argument. [Bug #7529]

Revision 38658
Added by Kazuki Tsujimoto about 3 years ago

  • test/ruby/test_keyword.rb: add a test for passing hash as a last argument. [Bug #7529]

History

#1 [ruby-dev:46713] Updated by Yukihiro Matsumoto about 3 years ago

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

Matz.

#2 [ruby-dev:46714] Updated by Yukihiro Matsumoto about 3 years ago

  • Status changed from Open to Rejected

Also available in: Atom PDF