Как реализовать перечислитель в Ruby?

Например:

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)?

6
задан Lai Yu-Hsuan 7 October 2011 в 19:34
поделиться