class IterationBuffer
my class IterationBuffer { }
An IterationBuffer is used when the implementation of an Iterator
class needs a lightweight way to store/transmit values. It doesn't make
Scalar containers, and only supports mutation through the BIND-POS
method, only supports adding values with the push and unshift
methods, supports merging of two IterationBuffer objects with the
append and prepend methods, and supports resetting with the
clear method.
It can be coerced into a List, Slip, or Seq.
Values will be stored "as is", which means that Junctions will be stored as such and will not autothread.
As of release 2021.12 of the Rakudo compiler, the new method also accepts
an Iterable as an optional argument which will be used to
fill the IterationBuffer.
Methods
method push
method push(IterationBuffer:D: Mu \value)
Adds the given value at the end of the IterationBuffer and returns the
given value.
method unshift
method unshift(IterationBuffer:D: Mu \value)
Adds the given value at the beginning of the IterationBuffer and returns
the given value. Available as of the 2021.12 release of the Rakudo compiler.
method append
method append(IterationBuffer:D: IterationBuffer:D $other --> IterationBuffer:D)
Adds the contents of the other IterationBuffer at the end of
the IterationBuffer, and returns the updated invocant.
method prepend
method prepend(IterationBuffer:D: IterationBuffer:D $other --> IterationBuffer:D)
Adds the contents of the other IterationBuffer at the beginning
of the IterationBuffer, and returns the updated invocant.
Available as of the 2021.12 release of the Rakudo compiler.
method clear
method clear(IterationBuffer:D: --> Nil)
Resets the number of elements in the IterationBuffer to zero,
effectively removing all data from it, and returns Nil.
method elems
method elems(IterationBuffer:D: --> Int:D)
Returns the number of elements in the IterationBuffer.
method AT-POS
multi method AT-POS(IterationBuffer:D: int $pos)
multi method AT-POS(IterationBuffer:D: Int:D $pos)
Returns the value at the given element position, or Mu if
the element position is beyond the length of the IterationBuffer,
or an error will be thrown indicating the index is out of bounds
(for negative position values).
method BIND-POS
multi method BIND-POS(IterationBuffer:D: int $pos, Mu \value)
multi method BIND-POS(IterationBuffer:D: Int:D $pos, Mu \value)
Binds the given value at the given element position and returns it.
The IterationBuffer is automatically lengthened if the given
element position is beyond the length of the IterationBuffer.
An error indicating the index is out of bounds will be thrown for
negative position values.
method Slip
method Slip(IterationBuffer:D: --> Slip:D)
Coerces the IterationBuffer to a Slip.
method List
method List(IterationBuffer:D: --> List:D)
Coerces the IterationBuffer to a List.
method Seq
method Seq(IterationBuffer:D: --> Seq:D)
Coerces the IterationBuffer to a Seq.
method raku
method raku(IterationBuffer:D: --> Str)
Produces a representation of the IterationBuffer as a List
postfixed with ".IterationBuffer" to make it different from an
ordinary list. Does not roundtrip. Intended for debugging
uses only, specifically for use with dd.