2013-09-04 1 views
2

Поэтому у меня есть некоторые функции в Ruby 1.9, где было бы на самом деле, очень приятно сделать функциональный эквивалент этого:Есть ли способ выполнить pwshrough python в ruby ​​1.9.3?

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

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

Так рубин Opts, но если я делаю это:

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>'

есть ли способ, чтобы пройти через выбирает из г в е?

ответ

3

Ваш

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

проходит два аргумента в f. Пропустить один, сделать это:

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

Как показано ниже?

def f(opts) 
    print opts.keys 
end 

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

g(:foo => 1) 

 Смежные вопросы

  • Нет связанных вопросов^_^