Combined from primary sources listed below.
See primary docmentation in context for routine tail.
multi method tail() is raw
multi method tail($n)
Returns the last or the list of the $n last elements of an object. $n can be a Callable, usually a WhateverCode, which will be used to get all but the first n elements of the object.
say (^12).reverse.tail ; # OUTPUT: «0»
say (^12).reverse.tail(3); # OUTPUT: «(2 1 0)»
say (^12).reverse.tail(*-7); # OUTPUT: «(4 3 2 1 0)»
As of release 2022.07 of the Rakudo compiler, there is also a "sub" version of tail.
multi tail(\specifier, +values)
It must have the tail specifier as the first argument. The rest of the arguments are turned into a Seq and then have the tail method called on it.
See primary docmentation in context for method tail.
multi method tail(Supply:D:)
multi method tail(Supply:D: Callable:D $limit)
multi method tail(Supply:D: \limit)
Creates a "tail" supply with the same semantics as List.tail.
my $s = Supply.from-list(4, 10, 3, 2);
my $ts = $s.tail(2);
$ts.tap(&say); # OUTPUT: «32»
You can call .tail with Whatever or Inf; which will return a new supply equivalent to the initial one. Calling it with a WhateverCode will be equivalent to skipping until that number.
my $s = Supply.from-list(4, 10, 3, 2);
my $ts = $s.tail( * - 2 );
$ts.tap(&say); # OUTPUT: «32»
This feature is only available from the 2020.07 release of Raku.
See primary docmentation in context for method tail.
multi method tail(List:D:)
multi method tail(List:D: $n --> Seq:D)
Returns a Seq containing the last $n items of the list. Returns an empty Seq if $n <= 0. Defaults to the last element if no argument is specified. Throws an exception if the list is lazy.
Examples:
say <a b c d e>.tail(*-3);# OUTPUT: «(d e)»
say <a b c d e>.tail(2); # OUTPUT: «(d e)»
say <a b c d e>.tail; # OUTPUT: «e»
In the first case, $n is taking the shape of a WhateverCode to indicate the number of elements from the beginning that will be excluded. $n can be either a Callable, in which case it will be called with the value 0, or anything else that can be converted to a number, in which case it will use that as the number of elements in the output Seq.
say <a b c d e>.tail( { $_ - 2 } ); # OUTPUT: «(c d e)»