Bug #6086
closedNumber of arguments and named parameters
Description
While working on the messages of "wrong number of arguments" error (see #6085), I realized that the new named parameter feature can lead to misleading error messages:
def foo(x: 42)
end
arg = {x: :bar}
foo(arg) # => nil (no error)
arg = :bar
foo(arg) # => ArgumentError: wrong number of arguments (1 for 0)
It would be better if the wording was changed for methods accepting options. Maybe something like:
foo(arg) # => ArgumentError: wrong number of arguments (1 for 0 **)
Suggestions?
Updated by ko1 (Koichi Sasada) over 12 years ago
- Assignee set to mame (Yusuke Endoh)
Updated by shyouhei (Shyouhei Urabe) over 12 years ago
- Status changed from Open to Assigned
Updated by mame (Yusuke Endoh) over 12 years ago
- Assignee changed from mame (Yusuke Endoh) to matz (Yukihiro Matsumoto)
Matz, what do you think?
I'm not against this. But I'm not sure how surprising this behavior is,
until I encounter it in actual use case.
"(1 for 0 **)" is not very good-looking, but I have no alternative idea.
--
Yusuke Endoh mame@tsg.ne.jp
Updated by matz (Yukihiro Matsumoto) over 12 years ago
- Status changed from Assigned to Rejected
Even though I understand the point, I am against the expression "(1 for 0 **)".
So until some one come up with better expression, we leave this as it is now.
Matz.