Class: Nerve::RingBuffer
- Inherits:
-
Array
- Object
- Array
- Nerve::RingBuffer
- Defined in:
- lib/nerve/ring_buffer.rb
Instance Method Summary collapse
-
#[](offset = 0) ⇒ Object
Access elements in the RingBuffer.
- #array_element ⇒ Object
- #array_push ⇒ Object
- #average ⇒ Object
-
#initialize(size) ⇒ RingBuffer
constructor
A new instance of RingBuffer.
- #push(element) ⇒ Object
Constructor Details
#initialize(size) ⇒ RingBuffer
Returns a new instance of RingBuffer.
6 7 8 9 |
# File 'lib/nerve/ring_buffer.rb', line 6 def initialize( size ) @ring_size = size.to_i super( @ring_size ) end |
Instance Method Details
#[](offset = 0) ⇒ Object
Access elements in the RingBuffer
offset will be typically negative!
26 27 28 |
# File 'lib/nerve/ring_buffer.rb', line 26 def []( offset = 0 ) return self.array_element( - 1 + offset ) end |
#array_element ⇒ Object
4 |
# File 'lib/nerve/ring_buffer.rb', line 4 alias_method :array_element, :[] |
#array_push ⇒ Object
3 |
# File 'lib/nerve/ring_buffer.rb', line 3 alias_method :array_push, :push |
#average ⇒ Object
11 12 13 |
# File 'lib/nerve/ring_buffer.rb', line 11 def average self.inject(0.0) { |sum, el| sum + el } / self.size end |
#push(element) ⇒ Object
15 16 17 18 19 20 |
# File 'lib/nerve/ring_buffer.rb', line 15 def push( element ) if length == @ring_size shift # loose element end array_push element end |