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.