你见过像这样声明的函数吗?
def foo a, **b
...
end
Run Code Online (Sandbox Code Playgroud)
我知道单个*是splat运算符.什么**意思?
我注意到我发现**Ruby 2.1.1中的(双splat)运算符是一个非常令人惊讶的行为.
当在a之前使用键值对时**hash,哈希保持不变; 但是,当键值对仅在之后使用时**hash,哈希值将被永久修改.
h = { b: 2 }
{ a: 1, **h } # => { a: 1, b: 2 }
h # => { b: 2 }
{ a: 1, **h, c: 3 } # => { a: 1, b: 2, c: 3 }
h # => { b: 2 }
{ **h, c: 3 } # => { b: 2, c: 3 }
h # => { b: 2, c: …Run Code Online (Sandbox Code Playgroud)