在角色 Blob 中§

请参阅主要文档 在上下文中 了解方法 subbuf

multi method subbuf(Int $fromInt $len = self.elems --> Blob:D)
multi method subbuf(Range $range --> Blob:D)
multi method subbuf(Blob:D: &From)
multi method subbuf(Blob:D: Int:D $From&End)
multi method subbuf(Blob:D: &From&End)
multi method subbuf(Blob:D: \fromWhatever)
multi method subbuf(Blob:D: \fromNumeric \length)

从索引开始提取调用者缓冲区的一部分,元素为 $from,并获取 $len 个元素(如果缓冲区较短,则更少),并创建一个新缓冲区作为结果。

say Blob.new(1..10).subbuf(24);    # OUTPUT: «Blob:0x<03 04 05 06>␤» 
say Blob.new(1..10).subbuf(*-2);     # OUTPUT: «Blob:0x<09 0a>␤» 
say Blob.new(1..10).subbuf(*-5,2);   # OUTPUT: «Blob:0x<06 07>␤»

为了方便,还允许指定 Range 来指示您想要调用者缓冲区的哪一部分

say Blob.new(1..10).subbuf(2..5);    # OUTPUT: «Blob:0x<03 04 05 06>␤»