From 4ce9058f64ea9004de6adc7fff491cbdbc01bd43 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Tue, 31 Jul 2018 03:26:53 +0900 Subject: Describe the difference of the keyword argument behavior. The implementation of keyword arguments is heavily rely on the prototype made by @take-cheeze in #3629. --- doc/limitations.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'doc') diff --git a/doc/limitations.md b/doc/limitations.md index afcb7b56e..e0c999aa6 100644 --- a/doc/limitations.md +++ b/doc/limitations.md @@ -205,3 +205,25 @@ trace (most recent call last): [0] -e:1 -e:1: undefined method 'binding' (NoMethodError) ``` + +## Keyword arguments + +mruby keyword arguments behave slightly different from CRuby 2.5 +to make the behavior simpler and less confusing. Maybe in the +future, the simpler behavior will be adopted to CRuby as well. + +#### Ruby [ruby 2.5.1p57 (2018-03-29 revision 63029)] + +``` +$ ruby -e 'def m(*r,**k) p [r,k] end; m("a"'=>1,:b=>2)' +[[{"a"=>1}], {:b=>2}] +``` + +#### mruby [] + +``` +$ ./bin/mruby -e 'def m(*r,**k) p [r,k] end; m("a"'=>1,:b=>2)' +trace (most recent call last): + [0] -e:1 +-e:1: keyword argument hash with non symbol keys (ArgumentError) +``` -- cgit v1.2.3