# File lib/backports/2.0.0/enumerator/lazy.rb, line 95 def take(n) n = Backports::coerce_to_int(n) raise ArgumentError, 'attempt to take negative size' if n < 0 return Lazy.new([]){} if n == 0 Lazy.new(self) do |yielder, *values| data = yielder.backports_memo ||= {remain: n} yielder.yield(*values) throw @@done if (data[:remain] -= 1) == 0 end end