How to force evaluation of range?

Messenger via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Feb 12 17:00:22 PST 2016


On Friday, 12 February 2016 at 20:43:24 UTC, Taylor Hillegeist 
wrote:
> So I have this code and I have to add the element
> .each!(a => a.each!("a"));
> to the end in order for it to evaluate the range completely and 
> act like I expect it too. Is there a  better thing to put in 
> the place of
> .each!(a => a.each!("a"));?
>
> [...]
>
>     dirEntries(Args[1], SpanMode.depth)
>         .filter!(f => f.name.endsWith(".c",".h"))
>         .tee!(a => writeln("\n",a,"\n\t","=".repeat(80).join))
>         .map!(a => a
>             .File("r")
>             .byLine
>             .enumerate
>             .filter!( l => l.value.byGrapheme.walkLength > 80)
>             .tee!(a => writeln("Line: ",a.index,"\t",a.value))
>          ).each!(a => a.each!("a")); //Force evaluation of 
> every item
>
> }

Have you tried .array? I *think* it's the commonly used way to 
flatten a lazy range.


More information about the Digitalmars-d-learn mailing list