19得票2回答
改变 *splat 和 **splatty-splat 运算符对我的对象执行的操作

怎样覆盖解包语法*obj和**obj的结果?比如说,你能不能想办法创建一个名为thing的对象,并使其表现出以下行为:>>> [*thing] ['a', 'b', 'c'] >>> [x for x in thing] ['d', 'e', 'f'] &g...

13得票3回答
Ruby中的关键字参数展开(splat)

下面发生的事情对我来说有点奇怪。def f(a, b) puts "#{a} :: #{b}" end f(*[1, 2], **{}) # prints "1 :: 2" hash = {} f(*[1, 2], **hash) ArgumentError: wrong number...

10得票2回答
双星号运算符会破坏性地修改哈希表 - 这是 Ruby 的一个错误吗?

我发现在 Ruby 2.1.1 中,**(双星号)操作符的行为非常令人惊讶。 当键值对在 **hash 之前使用时,哈希表保持不变;然而,当键值对仅在 **hash 之后使用时,哈希表将永久性地被修改。h = { b: 2 } { a: 1, **h } # => { ...

9得票1回答
在方法调用中使用 Ruby 的双星号(`**`)有什么作用?

使用单个星号(splat)可以将数组展开为多个参数,这与直接传递数组非常不同: def foo(a, b = nil, c = nil) a end args = [1, 2, 3] foo(args) # Evaluates to foo([1, 2, 3]) => [1,...