View source code
Display the source code in std/range/package.d from which this
page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a
Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
local clone.
Function std.range.tail
Return a range advanced to within _n
elements of the end of
range
.
auto tail(Range)
(
Range range,
size_t n
)
if (isInputRange!Range && !isInfinite!Range && (hasLength!Range || isForwardRange!Range));
Intended as the range equivalent of the Unix
tail utility. When the length
of range
is less than or equal to _n
, range
is returned
as-is.
Completes in Ο(1
) steps for ranges that support slicing and have
length. Completes in Ο(range
) time for all other ranges.
Parameters
Name | Description |
---|---|
range | range to get tail of |
n | maximum number of elements to include in tail |
Returns
Returns the tail of range
augmented with length information
Example
// tail -c n
writeln([1, 2, 3] .tail(1)); // [3]
writeln([1, 2, 3] .tail(2)); // [2, 3]
writeln([1, 2, 3] .tail(3)); // [1, 2, 3]
writeln([1, 2, 3] .tail(4)); // [1, 2, 3]
writeln([1, 2, 3] .tail(0) .length); // 0
// tail --lines=n
import std .algorithm .comparison : equal;
import std .algorithm .iteration : joiner;
import std .exception : assumeWontThrow;
import std .string : lineSplitter;
assert("one\ntwo\nthree"
.lineSplitter
.tail(2)
.joiner("\n")
.equal("two\nthree")
.assumeWontThrow);
Authors
Andrei Alexandrescu, David Simcha, Jonathan M Davis, and Jack Stouffer. Credit for some of the ideas in building this module goes to Leonardo Maffi.
License
Copyright © 1999-2022 by the D Language Foundation | Page generated by ddox.