在 Supply 中§
有关方法 skip 的主要文档,请参阅上下文。
method skip(Supply: Int(Cool) = 1 --> Supply)
返回一个新的 Supply
,它将发出给定 Supply
的所有值,但前 $number
个值除外,这些值将被丢弃。
my = Supplier.new;my = .Supply;= .skip(3);.tap();.emit() for 1..10; # OUTPUT: «45678910»
在 Any 中§
有关例程 skip 的主要文档,请参阅上下文。
multi method skip()multi method skip(Whatever)multi method skip(Callable )multi method skip(Int() )multi method skip(, )
从 1 项列表的迭代器创建一个 Seq
,并在其上使用 Seq.skip
,请查看该文档以了解实际用例;不带参数调用 skip
等效于 skip(1)
。
multi skip(\skipper, +values)
从 Rakudo 编译器的 2022.07 版本开始,还有一个“sub”版本的 skip
。它必须将 skip 说明符作为第一个参数。其余参数将转换为 Seq
,然后在其上调用 skip
方法。
在模块 Test 中§
请参阅上下文中的主要文档,了解 sub skip
multi skip()multi skip(, = 1)
跳过 $count
个测试,并给出跳过原因 $reason
。默认情况下,只会跳过一个测试。当一个(或多个)测试在运行时会失败时,请使用此功能。
sub num-forward-slashes() ;if ~~ 'linux'else
请注意,如果您将测试标记为跳过,则还必须阻止该测试运行。
在 Seq 中§
请参阅上下文中的主要文档,了解 method skip
multi method skip(Seq:)multi method skip(Seq: Whatever)multi method skip(Seq: Callable )multi method skip(Seq: Int() )multi method skip(Seq: , )
返回一个 Seq,其中包含在丢弃接下来的 $n
个可用值后调用方的剩余部分。$n
的负值计为 0。也可以使用 WhateverCode
来指示要从末尾跳过多少个值。将阻塞惰性 Seq,直到丢弃请求数量的值。
say (1..5).Seq.skip; # OUTPUT: «(2 3 4 5)»say (1..5).Seq.skip(3); # OUTPUT: «(4 5)»say (1..5).Seq.skip(5); # OUTPUT: «()»say (1..5).Seq.skip(-1); # OUTPUT: «(1 2 3 4 5)»
使用 Whatever
调用它将返回一个空的 Seq
say <1 2 3>.Seq.skip(*); # OUTPUT: «()»
使用 Callable 的多重调用主要用于以下方式
say (1..5).Seq.skip(*-3); # OUTPUT: «(3 4 5)»
它不会丢弃前 $n
个元素,而是丢弃除 WhateverCode 指示的元素之外的所有元素,在本例中是除最后三个元素之外的所有元素。
从语言版本 6.e
开始(Rakudo 编译器 2022.12+ 中存在早期实现),还可以指定多个参数值。然后将这些值解释为要生成的数值、要跳过的数值、要生成的数值,等等。
say (1..12).Seq.skip(2,3,4); # OUTPUT: «(3 4 5 10 11 12)»
这首先跳过了 2 个值,然后生成了 3 个值(3、4、5),跳过了 4 个值,然后生成了其余的值(10、11、12)。
如果指定的最终值位于“生成”位置,则将跳过 Seq
的其余部分。如果最终值位于“跳过”位置,则将生成 Seq
的其余部分。
say (1..10).Seq.skip(2,3,1,2); # OUTPUT: «(3 4 5 7 8)»say (1..10).Seq.skip(2,3,1); # OUTPUT: «(3 4 5 7 8 9 10)»
如果在“生成”位置指定了 Whatever
,则将导致生成 Seq
的其余部分。否则,将导致跳过 Seq
的其余部分。
say (1..10).Seq.skip(2,*); # OUTPUT: «(3 4 5 6 7 8 9 10)»say (1..10).Seq.skip(2,3,*); # OUTPUT: «(3 4 5)»
如果要从生成值而不是跳过值开始,请指定 0 作为第一个值。
say (1..10).Seq.skip(0,3,4); # OUTPUT: «(1 2 3 8 9 10)»
如果需要一个无限重复的跳过和生成模式,可以将参数指定为一个无限的 Seq
。
say (^20).Seq.skip(|(2,3) xx *); # OUTPUT: «(0 1 5 6 10 11 15 16)»