Last element of a forward range

bearophile bearophileHUGS at lycos.com
Fri Apr 11 18:05:26 PDT 2014


If I have a range like this, how do you find its last item using 
Phobos?

A simple way is to use seq.array.back, but this wastes memory. 
Another simple way is to use a foreach loop keeping the last 
seen. But do you know if there is a function to do in Phobos? And 
if such function is not present (walkBack? backWalk?) is it a 
good idea to add it to Phobos?


void main() {
     import std.stdio, std.algorithm, std.range;

     int m = 75;
     auto seq = recurrence!q{ a[n - 1] + a[n - 2] }(1, 1)
                .until!(x => x > m)(OpenRight.no);

     seq.array.back.writeln; // 89
     //seq.back.writeln;

     auto last = -1;
     foreach (immutable x; seq)
         last = x;
     last.writeln;
}


Bye,
bearophile


More information about the Digitalmars-d-learn mailing list