class Stream::CollectionStream
A CollectionStream
can be used as an external iterator for each interger-indexed collection. The state of the iterator is stored in instance variable @pos.
A CollectionStream
for an array is created by the method Array#create_stream
.
Attributes
pos[R]
Public Class Methods
new(seq)
click to toggle source
Creates a new CollectionStream
for the indexable sequence seq.
# File lib/stream.rb 195 def initialize(seq) 196 @seq = seq 197 set_to_begin 198 end
Public Instance Methods
at_beginning?()
click to toggle source
# File lib/stream.rb 204 def at_beginning? 205 @pos < 0 206 end
at_end?()
click to toggle source
# File lib/stream.rb 200 def at_end? 201 @pos + 1 >= @seq.size 202 end
basic_backward()
click to toggle source
# File lib/stream.rb 223 def basic_backward 224 r = @seq[@pos] 225 @pos -= 1; r 226 end
basic_forward()
click to toggle source
# File lib/stream.rb 218 def basic_forward 219 @pos += 1 220 @seq[@pos] 221 end
set_to_begin()
click to toggle source
positioning
# File lib/stream.rb 210 def set_to_begin 211 @pos = -1 212 end
set_to_end()
click to toggle source
# File lib/stream.rb 214 def set_to_end 215 @pos = @seq.size - 1 216 end
Protected Instance Methods
basic_current()
click to toggle source
basic_current
and basic_peek
can be implemented more efficiently than in superclass
# File lib/stream.rb 232 def basic_current 233 @seq[@pos] 234 end
basic_peek()
click to toggle source
# File lib/stream.rb 236 def basic_peek 237 @seq[@pos + 1] 238 end