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 にて実行)
on 2012-12-06 17:54
on 2012-12-06 19:34
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 にて実行)
on 2012-12-06 19:34
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
Log in with Google account | Log in with Yahoo account
No account? Register here.