double-splat

    1热度

    2回答

    我的理解双图示是一个非数组对象上的单个呼叫图示和to_a然后解离的元素分开。而且,由于nil.to_a被定义为[],下面的转换情况: [:foo, *nil, :bar] # => [:foo, *nil.to_a, :bar] # => [:foo, *[], :bar] # => [:foo, :bar] 通过类比,我认为一个非散列对象上的双图示呼吁to_h然后开解离的键值对。而且,

    1热度

    1回答

    我得到了这种奇怪的行为,试图使用双摔跤扩大哈希变量。不知道为什么会发生这种情况。 我的红宝石版本 ruby 2.2.6p396 (2016-11-15 revision 56800) 方案 class MyClass def my_method; end end MyClass.new.my_method(*[]) # returns nil MyClass.new.my_me

    4热度

    3回答

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

    2热度

    2回答

    在Python中,我可以通过一个字典,它的键匹配参数的名字与**(双图示)操作: def foo(a, b): print (a - b) args = {'b': 7, 'a': 10} foo(**args) # prints 3 如何做ES6相同?这不起作用: function foo(a, b) { console.log(a - b) }

    6热度

    1回答

    有了一个图示,我们可以扩展的阵列为多个参数,这些参数是直接传递数组相当不同: 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