我有一个Ruby方法和一个块配置如下:
def control; yield(1,2,3); end
calc = -> (a,b,c) { a + b+ c }
现在,我想将control
方法的yield中的所有参数传递给calc
块,如下所示:
control{|a,b,c| calc[a,b,c]}
control{|*args| calc[*args]} # another succint way to write that.
# => 6
是否有更可读的方式/语法来编写相同的?可能,如下所示:
control.passthru(:calc)
control(&:calc) # this won't work I know, but still is more readable to me
control.yield[calc]
calc.call(*control.yielded_params)
答案 0 :(得分:0)
我不确定为什么你认为它更具可读性,但是你走了:
control &calc
#⇒ 6
control(&:calc)
无法正常工作,因为它会在Symbol#to_proc
符号上调用:calc
。您可能希望通过λ⇒直接传递它。