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 中文

展开上面的图表