[12.x] Add step parameter to LazyCollection range method #53473
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The range method is designed to create a collection with integer values within a specified range, allowing the caller to define both a starting point ($from) and an endpoint ($to). An optional $step parameter specifies the increment or decrement for each iteration through the range.
Here's a breakdown of its behavior:
Parameters:
$from: The starting integer of the range.
$to: The ending integer of the range.
$step (optional): The amount by which the range increments or decrements. By default, this is set to 1.
Validation:
If $step is set to 0, an InvalidArgumentException is thrown. This validation ensures that there is no infinite loop caused by a zero increment, which would result in the range generator producing the same number indefinitely.
Range Generation Logic:
The method uses a generator to yield each value in the range without requiring memory to store all values at once, making it efficient for large ranges.
If $from is less than or equal to $to, it iterates by adding the absolute value of $step until reaching or surpassing $to.
If $from is greater than $to, it iterates by subtracting the absolute value of $step until it reaches or is less than $to.
Example Usage:
This method provides a flexible way to generate ranges with custom increments or decrements, making it suitable for various use cases in numerical data processing or iteration.