Например:
a = [1,2,3,4,5]
a.delete_if { |x| x > 3 }
эквивалентно:
a = [1,2,3,4,5]
a.delete_if.each.each.each.each { |x| x > 3 }
Я знаю, что a.delete_if
возвращает перечислитель. Но как узнать, что он должен удалить объект, если блок each
возвращает истину? Как реализовать delete_if
вручную (и в Ruby)?