Working with ranges

Jonathan M Davis newsgroup.d at jmdavisprog.com
Sat Dec 8 04:13:33 UTC 2018


On Friday, December 7, 2018 8:46:11 PM MST Adam D. Ruppe via Digitalmars-d-
learn wrote:
> On Saturday, 8 December 2018 at 03:37:56 UTC, Murilo wrote:
> > Hi guys, I have created an array of strings with "string[12] ps
>
> string[12] isn't a range, but string[] is.
>
> Try passing `ps[]` to the function instead of plain `ps` and see
> what happens.

Specifically, the problem is that static arrays have a fixed length, which
means that you can't pop elements off as is required for ranges. Dynamic
arrays on the other hand are ranges (at least as long as you import
std.range.primitives to get the range functions for dynamic arrays). Slicing
a static array gives you a dynamic array which is a slice of the static
array. So, mutating the elements of the dynamic array will mutate the
elements of the static array, but the dynamic array can have elements popped
off as is required for ranges, whereas the static array can't.

- Jonathan M Davis





More information about the Digitalmars-d-learn mailing list