使用单个 splat,我们可以将数组扩展为多个参数,这与直接传递数组有很大不同:
def foo(a, b = nil, c = nil)
a
end
args = [1, 2, 3]
foo(args) # Evaluates to foo([1, 2, 3]) => [1, 2, 3]
foo(*args) # Evaluates to foo(1, 2, 3) => 1
但是,使用关键字参数,我看不出有任何区别,因为它们只是散列的语法糖:
def foo(key:)
key
end
args = { key: 'value' }
foo(args) # Evaluates to foo(key: 'value') => 'value'
foo(**args) # Evaluates to foo(key: 'value') => 'value'
除了良好的对称性之外,还有什么实际理由在方法调用上使用双板吗?(请注意,这与在方法定义中使用它们不同)