2016-05-30 3 views

ответ

0

Вы можете использовать inject для этого:

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

Реверс требуется, чтобы получить вещи в правильном порядке. При первом вызове блока acc является последним элементом от q, q[3] в вашем примере и значением q[2]. На следующей итерации, значение q[1] и acc является результатом от предыдущего блока (q[2].from(q[3])), поэтому он вычисляет

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

И так далее

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