class Fibber

Holds state for a fibonacci series

Public Class Methods

new(limit) click to toggle source
# File src/ruby/bin/math_server.rb, line 65
def initialize(limit)
  fail "bad limit: got #{limit}, want limit > 0" if limit < 1
  @limit = limit
end

Public Instance Methods

generator() { |num(num: 1)| ... } click to toggle source
# File src/ruby/bin/math_server.rb, line 70
def generator
  return enum_for(:generator) unless block_given?
  idx, current, previous = 0, 1, 1
  until idx == @limit
    if idx.zero? || idx == 1
      yield Math::Num.new(num: 1)
      idx += 1
      next
    end
    tmp = current
    current = previous + current
    previous = tmp
    yield Math::Num.new(num: current)
    idx += 1
  end
end