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.
This commit is contained in:
Yukihiro "Matz" Matsumoto
2018-07-31 03:26:53 +09:00
parent e27565152f
commit 4ce9058f64
+22
View File
@@ -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)
```