У меня есть массив, и я хочу, чтобы результат первого блока возвращал истинное значение (aka, not nil). Уловка заключается в том, что в моем фактическом прецеденте тест имеет побочный эффект (я на самом деле повторяю множество очередей и выскакиваю сверху), поэтому мне не нужно оценивать блок за пределами этого первого успеха.
a,b,c = [1,2,3]
[a,b,c].first_but_value{ |i| (i + 1) == 2 } == 2
a == 2
b == 2
c == 3
Любые идеи?