my
当 Iterator
类的实现需要一种轻量级方式来存储/传输值时,将使用 IterationBuffer
。它不创建 Scalar
容器,并且仅通过 BIND-POS
方法支持变异,仅通过 push
和 unshift
方法支持添加值,支持使用 append
和 prepend
方法合并两个 IterationBuffer
对象,并支持使用 clear
方法重置。
值将“按原样”存储,这意味着 Junctions 将按原样存储,并且不会 自动线程化。
从 Rakudo 编译器的 2021.12 版本开始,new
方法还接受 Iterable
作为可选参数,该参数将用于填充 IterationBuffer
。
方法§
方法 push§
method push(IterationBuffer: Mu \value)
在 IterationBuffer
的末尾添加给定值并返回给定值。
方法 unshift§
method unshift(IterationBuffer: Mu \value)
在 IterationBuffer
的开头添加给定值并返回给定值。从 Rakudo 编译器的 2021.12 版本开始可用。
方法 append§
method append(IterationBuffer: IterationBuffer --> IterationBuffer)
在 IterationBuffer
的末尾添加其他 IterationBuffer
的内容,并返回更新的调用者。
方法 prepend§
method prepend(IterationBuffer: IterationBuffer --> IterationBuffer)
在 IterationBuffer
的开头添加其他 IterationBuffer
的内容,并返回更新的调用者。从 Rakudo 编译器的 2021.12 版本开始可用。
方法 clear§
method clear(IterationBuffer: --> Nil)
将 IterationBuffer
中的元素数量重置为零,有效地从中删除所有数据,并返回 Nil
。
方法 elems§
method elems(IterationBuffer: --> Int)
返回 IterationBuffer
中的元素数量。
方法 AT-POS§
multi method AT-POS(IterationBuffer: int )multi method AT-POS(IterationBuffer: Int )
返回给定元素位置的值,如果元素位置超出 IterationBuffer
的长度,则返回 Mu
,或者将抛出错误,指示索引超出范围(对于负位置值)。
方法 BIND-POS§
multi method BIND-POS(IterationBuffer: int , Mu \value)multi method BIND-POS(IterationBuffer: Int , Mu \value)
将给定值绑定到给定元素位置并返回它。如果给定的元素位置超出 IterationBuffer
的长度,则 IterationBuffer
将自动延长。对于负位置值,将抛出指示索引超出范围的错误。
方法 Slip§
method Slip(IterationBuffer: --> Slip)
将 IterationBuffer
强制转换为 Slip
。
方法 List§
method List(IterationBuffer: --> List)
将 IterationBuffer
强制转换为 List
。
方法 Seq§
method Seq(IterationBuffer: --> Seq)
将 IterationBuffer
强制转换为 Seq
。
方法 raku§
method raku(IterationBuffer: --> Str)
生成 IterationBuffer
的表示形式,表示形式为以 ".IterationBuffer" 为后缀的 List
,使其与普通列表不同。不会进行往返转换。仅用于调试用途,特别是与 dd 一起使用。