std.range: Lockstep vs. Zip

Alex Parrill via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Mar 3 07:00:10 PST 2016


On Wednesday, 2 March 2016 at 08:51:07 UTC, Manuel Maier wrote:
> Hi there,
>
> I was wondering why I should ever prefer std.range.lockstep 
> over std.range.zip. In my (very limited) tests std.range.zip 
> offered the same functionality as std.range.lockstep, i.e. I 
> was able to iterate using `foreach(key, value; 
> std.range.zip(...)) {}` which, according to the docs, is what 
> std.range.lockstep was supposed to be designed for. On top of 
> that, std.range.zip is capable of producing a 
> RandomAccessRange, but std.range.lockstep only produces 
> something with opApply.
>
> Cheers
zip uses the InputRange protocol, and bundles up all the values 
in a Tuple.

lockstep uses the opApply protocol, and doesn't bundle the values.

Lockstep is useful for foreach loops since you don't need to 
unpack a tuple, but zip is compatible with all of the std.range 
and std.algorithm functions that take ranges.


More information about the Digitalmars-d-learn mailing list