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 に渡す方法はありますか?

4

2 に答える 2

4

君の

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

に 2 つの引数を渡しますf。1 つを渡すには、次のようにします。

def g(opts)
    f(opts.merge(:bar=>3))
end
于 2013-09-04T01:21:52.540 に答える
1

以下のように?

def f(opts)
    print opts.keys
end

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

g(:foo => 1)
于 2013-09-04T01:21:48.633 に答える