假设我有一个方法标题:有没有办法在ruby 2中使用关键字参数进行递归,而无需重新指定每个参数?
def meth(a: val1, b: val2, c: val3)
和内部meth
,我想打一个递归调用,并通过所有相同的参数,但改变一个..
或许真的与此类似,语义上:
meth(_args_.merge(c: newval))
这是可能的吗?
假设我有一个方法标题:有没有办法在ruby 2中使用关键字参数进行递归,而无需重新指定每个参数?
def meth(a: val1, b: val2, c: val3)
和内部meth
,我想打一个递归调用,并通过所有相同的参数,但改变一个..
或许真的与此类似,语义上:
meth(_args_.merge(c: newval))
这是可能的吗?
不知道如果一个内置的方法存在着这样做,但它使用local_variables
和一些EVAL-Fu的明显可能:
def foo(bar: :baz)
Hash[local_variables.map { |k| [k, eval("#{k}")] }]
end
foo # {:bar=>:baz}
相关问题:
local_variables整洁。虽然这种方法有很多非正式的参数 - 所以local_variables非常大。有没有更简单的方法来传递方法头文件? 我想可以做'method(:meth).parameters.map {| a | a.last}'并根据结果过滤'local_variables'。此时,只要指定所有参数即可。大声笑。仍然整齐地知道这是可能的,但。 – NullVoxPopuli
Null,如果你这样做了,你可以用'method(__ method __)。parameters ...'代替。 –
你能不能做参数为散列,将其与包含默认值的散列合并,在'meth'中执行您需要做的事情,然后更改递归的一个键?我理解类似的东西是在命名参数被支持之前完成的。 –