class DurationEstimate::SizedQueue
Queue (array) that can hold max_size
items at most.
Attributes
items[RW]
Collection of items.
@return [Array]
max_size[RW]
Maximum number the collection will hold.
@return [Fixnum]
Public Class Methods
new(max_size)
click to toggle source
Setup.
@param max_size
[Fixnum] What is the maximum size?
# File lib/duration_estimate/sized_queue.rb, line 17 def initialize(max_size) self.max_size = max_size self.items = [] end
Public Instance Methods
<<(item)
click to toggle source
Add an item into the collection.
@param item [Object] Item to add.
@return [SizedQueue] Self.
# File lib/duration_estimate/sized_queue.rb, line 27 def <<(item) items << item items.shift if items.size > max_size self end
average()
click to toggle source
Calculate mean (average). It is assumed that the objects in collection respond to :+
method.
@return [Numeric, nil]
# File lib/duration_estimate/sized_queue.rb, line 37 def average size = items.size return if size.zero? items.reduce(:+) / size end