有没有办法在ruby 2中使用关键字参数进行递归,而无需重新指定每个参数?

时间:2014-01-20 20:24:50

标签: ruby recursion named-parameters keyword-argument

假设我有一个方法标题:

def meth(a: val1, b: val2, c: val3)

meth内部,我想进行递归调用,并传递所有相同的参数,但更改一个...

也许与此相似,语义上:

meth(_args_.merge(c: newval))

这可能吗?

1 个答案:

答案 0 :(得分:1)

不确定是否存在内置方法,但显然可以使用local_variables和一些eval-fu:

def foo(bar: :baz)
  Hash[local_variables.map { |k| [k, eval("#{k}")] }]
end

foo # {:bar=>:baz}

相关问题:

How do I dynamically create a local variable in Ruby?