role Sequence does PositionalBindFailover { }

此角色实现了一系列用于转换序列和访问其元素的方法。这些方法应该适用于所有序列:串行 Seq、有序并行 HyperSeq 和无序并行 RaceSeq

这些方法的共同点是,如果序列尚未 缓存,它们都会访问底层迭代器。因此,如果对已消耗的 Seq 调用它们,它们将抛出类型为 X::Seq::Consumed 的错误。

方法§

方法 Str§

multi method Str(::?CLASS:D:)

字符串化 缓存 的序列。

方法 Stringy§

multi method Stringy(::?CLASS:D:)

缓存 的序列上调用 .Stringy

方法 Numeric§

method Numeric(::?CLASS:D:)

返回 缓存 的序列中的元素数量。

方法 AT-POS§

multi method AT-POS(::?CLASS:D: Int:D $idx)
multi method AT-POS(::?CLASS:D: int $idx)

返回 缓存 的序列中位置 $idx 处的元素。

方法 EXISTS-POS§

multi method EXISTS-POS(::?CLASS:D: Int:D $idx)
multi method EXISTS-POS(::?CLASS:D: int $idx)

返回一个 Bool,指示 缓存 的序列中位置 $idx 处是否存在元素。

方法 eager§

method eager(::?CLASS:D: --> List:D)

返回一个基于调用者序列的急切求值 List,并将其标记为已消耗。如果对已消耗的 Seq 调用,则抛出类型为 X::Seq::Consumed 的错误。

my $s = lazy 1..5;
 
say $s.is-lazy# OUTPUT: «True␤» 
say $s.eager;   # OUTPUT: «(1 2 3 4 5)␤» 
 
say $s.eager;
CATCH {
    when X::Seq::Consumed {
        say 'Throws exception if already consumed';
    }
}
# OUTPUT: «Throws exception if already consumed␤»

方法 fmt§

method fmt($format = '%s'$separator = ' ' --> Str:D)

格式化 缓存 的序列。

方法 gist§

multi method gist(::?CLASS:D:)

返回 缓存 的序列的 gist

类型图§

Sequence 的类型关系
raku-type-graph Sequence Sequence PositionalBindFailover PositionalBindFailover Sequence->PositionalBindFailover Mu Mu Any Any Any->Mu Cool Cool Cool->Any Iterable Iterable Seq Seq Seq->Sequence Seq->Cool Seq->Iterable RaceSeq RaceSeq RaceSeq->Sequence RaceSeq->Any RaceSeq->Iterable HyperSeq HyperSeq HyperSeq->Sequence HyperSeq->Any HyperSeq->Iterable

展开上面的图表