Working with ranges

Elmar chrehme at gmx.de
Wed May 26 13:58:56 UTC 2021


On Saturday, 8 December 2018 at 03:51:02 UTC, Adam D. Ruppe wrote:
> On Saturday, 8 December 2018 at 03:48:10 UTC, Murilo wrote:
>>> Try passing `ps[]` to the function instead of plain `ps` and 
>>> see what happens.
>>
>> How do I transform an array into a range?
>
> With the slicing operator, [].

That's amazing, this should be one thing that should appear in 
every tutorial just right at the start! I was looking hours for a 
way to generate an "iterator" (a range) from a fixed-size array 
which doesn't copy the elements (unless elements are 
deleted/added).

But my issue now is, I have strided arrays (or just any Result 
range) and I want to use the slicing operator `[]` with that 
range to copy it into a fixed-size array or apply element-wise 
operations on it. How can I do that?

This example will not compile:

```
	auto starts = arr[0..$].stride(2);
	auto ends = arr[1..$].stride(2);
	randomNumbers[] = ends[] - starts[];
```

Because `[]` is not defined for the Result range. Is there a 
standard wrapper function which wraps an elementwise `[]` 
operator implementation around a range?


More information about the Digitalmars-d-learn mailing list