当q大小未知时,如何递归调用类似:q [0] .from(q [1] .from(q [2] .from(q [3])))的方法?

时间:2016-05-30 07:08:49

标签: ruby recursion

如何以递归方式调用以下方法:q[0].from(q[1].from(q[2].from(q[3]))) 在q大小未知的情况下在Ruby中?

1 个答案:

答案 0 :(得分:0)

您可以使用inject

q.reverse_each.inject do |acc, value|
  value.from(acc)
end

需要采取相反的措施才能使事情顺利进行。第一次调用块时accq中的最后一个元素,在您的示例中为q[3],值为q[2]。在下一次迭代中,值为q[1]acc是前一个块(q[2].from(q[3]))的结果,因此计算

q[1].from(q[2].from(q[3]))

等等