有没有办法让python kwargs在ruby 1.9.3中传递?

时间:2013-09-04 01:17:38

标签: ruby ruby-1.9.3

所以我在Ruby 1.9中有一些函数,它们真的非常非常适合做这个函数的功能:

def foo(**kwargs):
    ...do stuff...

def bar(**kwargs):
    foo(x = 2, y = 3, **kwargs)

所以Ruby选择了,但如果我这样做:

def f(opts)
    print opts.keys
end

def g(opts)
    f(opts, :bar=>3)
end

g(:foo => 1)

我明白了:

script:1:in f': wrong number of arguments (2 for 1) (ArgumentError) from script:6:in g' from script:9:in <main>'

有没有办法将opts从g传递到f?

2 个答案:

答案 0 :(得分:4)

def g(opts)
    f(opts, :bar=>3)
end

将两个参数传递给f。要让它通过,请执行以下操作:

def g(opts)
    f(opts.merge(:bar=>3))
end

答案 1 :(得分:1)

如下所示?

def f(opts)
    print opts.keys
end

def g(opts)
    opts[:bar] = 3
    f(opts)
end

g(:foo => 1)