In List§

请参阅主要文档 in context 了解方法 head

multi method head(Any:D:is raw
multi method head(Any:D: Callable:D $w)
multi method head(Any:D: $n)

此方法直接从 Any 继承,它返回列表的第一个$n 项,如果 $n <= 0,则返回一个空列表,或者如果没有参数,则返回第一个元素。采用 Callable 的版本使用 WhateverCode 指定所有元素,从第一个元素开始,但最后一个元素除外。

示例

say <a b c d e>.head ;     # OUTPUT: «a␤» 
say <a b c d e>.head(2);   # OUTPUT: «(a b)␤» 
say <a b c d e>.head(*-3); # OUTPUT: «(a b)␤»

In Supply§

请参阅主要文档 in context 了解方法 head

multi method head(Supply:D:)
multi method head(Supply:D: Callable:D $limit)
multi method head(Supply:D: \limit)

创建一个“head”供应,其语义与 List.head 相同。

my $s = Supply.from-list(41032);
my $hs = $s.head(2);
$hs.tap(&say);           # OUTPUT: «4␤10␤»

自 2020.07 版本起,WhateverCode 也可以使用,其语义与 List.head 相同

my $s = Supply.from-list(410321);
my $hs = $s.head* - 2);
$hs.tap(&say);           # OUTPUT: «4␤10␤3␤»

In Any§

请参阅主要文档 in context 了解例程 head

multi method head(Any:D:is raw
multi method head(Any:D: Callable:D $w)
multi method head(Any:D: $n)

返回对象中的第一个元素,或如果使用,则返回第一个 $n

"aaabbc".comb.head.put# OUTPUT: «a␤» 
say ^10 .head(5);           # OUTPUT: «(0 1 2 3 4)␤» 
say ^∞ .head(5);            # OUTPUT: «(0 1 2 3 4)␤» 
say ^10 .head;              # OUTPUT: «0␤» 
say ^∞ .head;               # OUTPUT: «0␤»

在前两种情况下,结果是不同的,因为在 Mix 中没有定义的顺序。在其他情况下,它返回一个 Seq。可以使用 Callable 返回除最后一个元素之外的所有元素

say (^10).head* - 3 );# OUTPUT: «(0 1 2 3 4 5 6)␤»

从 Rakudo 编译器的 2022.07 版本开始,还提供了 head 的“sub”版本。

multi head(\specifier+values)

必须将头说明符作为第一个参数。其余参数将转换为 Seq,然后对其调用 head 方法。