| |
| Posted by Steven Schveighoffer in reply to Antonio | PermalinkReply |
|
Steven Schveighoffer
Posted in reply to Antonio
| On 6/10/22 4:33 PM, Antonio wrote:
> When mapping and filtering, the last mapped element is evaluated twice... Is it the expected behaviour?
void main()
{
import std.algorithm, std.stdio;
[1,2,3,4,5].
map!((x){
writeln("mapping ", x);
return x;
}).
filter!(x=>x>2).
front.
writeln();
}
Output
mapping 1
mapping 2
mapping 3
mapping 3
3
map calls the lambda for each call to front . If you want a cached version, use cache :
void main()
{
import std.algorithm, std.stdio;
[1,2,3,4,5].
map!((x){
writeln("mapping ", x);
return x;
}).
cache.
filter!(x=>x>2).
front.
writeln();
}
-Steve
|