неділя, 25 березня 2012 р.

Ruby 2.0 Enumerator::Lazy

Продовжимо знайомитися із нововведеннями, які увійдуть у випуск Ruby 2.0.

Нещодавно патч Enumerator::Lazy був прийнятий в ruby trunk. А це значить що в Ruby 2.0 ми зможемо:
a = [1,2,3,4,2,5].lazy.map { |x| x * 10 }.select { |x| x > 30 } #=> обчислення не відбувається
a.to_a #=> [40, 50], об'єкт обчислюється за один прохід

Зараз Enumerator::Lazy має в своєму арсеналі select, map, reject, grep, flat_map, zip, take, take_while, drop, drop_while, cycle. Розробка активно продовжується. Якщо хочете використовувати його прямо зараз - досить скомпілювати Ruby з trunk і насолоджуватися.

Докладніше про Enumerator::Lazy: англійською і російською.

Немає коментарів: