我想传递一个可选参数(任何数据类型,甚至是哈希),然后是一个方法的关键字参数列表(可以为空).
这就是我得到的:
def my_method(subject = nil, **options)
[subject, options]
end
Run Code Online (Sandbox Code Playgroud)
在以下情况下,方法输出符合预期:
没有
my_method()
# => [nil, {}]
Run Code Online (Sandbox Code Playgroud)课程
my_method('foo')
# => ["foo", {}]
Run Code Online (Sandbox Code Playgroud)一个有选项的文字主题
my_method('foo', bar: 'bar')
# => ["foo", {:bar=>"bar"}]
Run Code Online (Sandbox Code Playgroud)a Hash作为选项的主题
my_method({foo: 'foo'}, bar: 'bar')
# => [{:foo=>"foo"}, {:bar=>"bar"}]
Run Code Online (Sandbox Code Playgroud)没有主题,只有选项
my_method(bar: 'bar')
# => [nil, {:bar=>"bar"}]
Run Code Online (Sandbox Code Playgroud)当传递Hash作为主题而没有选项时,期望的结果是:
my_method({foo: 'foo'})
# => [{:foo=>"foo"}, {}]
Run Code Online (Sandbox Code Playgroud)
但我得到以下内容; 我没有得到正确的主题:
my_method({foo: 'foo'})
# => [nil, {:foo=>"foo"}]
Run Code Online (Sandbox Code Playgroud)
是my_method(foo: 'foo')相当于my_method({foo: 'foo'})?关于如何获得理想结果的任何想法?