Tag: 方法调用

为什么在“splatting”关键字参数时**是可选的?

鉴于此方法定义: def foo(a = nil, b: nil) pa: a, b: b end 当我使用单个哈希参数调用方法时,无论**如何,哈希都会隐式转换为关键字参数: hash = {b: 1} foo(hash) #=> {:a=>nil, :b=>1} foo(**hash) #=> {:a=>nil, :b=>1} 我可以传递另一个(空)哈希作为变通方法: foo(hash, {}) #=> {:a=>{:b=>1}, :b=>nil} 但是 ,这看起来非常麻烦和笨拙。 我本以为Ruby会处理这个更像是处理数组,即: foo(hash) #=> {:a=>{:b=>1}, :b=>nil} foo(**hash) #=> {:a=>nil, :b=>1} 并使用文字: foo({b: 1}) #=> {:a=>{:b=>1}, :b=>nil} foo(b: 1) #=> {:a=>nil, :b=>1} foo(**{b: 1}) […]