In Array§

See primary documentation in context for method shift

method shift(Array:D:) is nodal

Removes and returns the first item from the array. Fails if the array is empty.

Example:

my @foo = <a b>;
say @foo.shift;             # OUTPUT: «a␤»
say @foo.shift;             # OUTPUT: «b␤»
say @foo.shift;
CATCH { default { put .^name, ': ', .Str } };
# OUTPUT: «X::Cannot::Empty: Cannot shift from an empty Array␤»

In role Buf§

See primary documentation in context for method shift

method shift()

Removes and returns the first element of the buffer.

my $bú = Buf.new( 1, 1, 2, 3, 5 );
say $bú.shift(); # OUTPUT: «1␤»
say $bú.raku;    # OUTPUT: «Buf.new(1,2,3,5)␤»

In Independent routines§

See primary documentation in context for sub shift

multi shift(@a) is raw

Calls method shift on the Positional argument. That method, on a mutable collection that actually implements it (such as an Array or a Buf), is supposed to remove and return the first element, or return a Failure if the collection is empty.

Example:

say shift [1,2]; # OUTPUT: «1␤»
my @a of Int = [1];
say shift @a; # OUTPUT: «1␤»
say shift @a; # ERROR: «Cannot shift from an empty Array[Int]␤»