Working with ranges

Adam D. Ruppe destructionator at gmail.com
Sat Dec 8 04:16:25 UTC 2018


On Saturday, 8 December 2018 at 04:11:03 UTC, Murilo wrote:
> What is the difference between declaring "int[3] a = [1,2,3];" 
> and declaring "int[] a = [1,2,3];"? Is the first an array and 
> the second a range?

They are both arrays, just the former one has a fixed size and 
the latter does not. Ranges require a way to iterate and consume 
elements, meaning they cannot be fixed size.

> I always thought that leaving the square brackets empty would 
> create an array of flexible size, it never occurred to me that 
> it was creating something else.

That's what it is, just a flexible array also happens to be an 
array, whereas a fixed-size array is not one.

But a slice of a fixed size one yields a flexible one.. which is 
why the ps[] thing works to create a range out of it.


More information about the Digitalmars-d-learn mailing list