Why is dynamic array length required here?

Samir samir at aol.com
Fri Oct 19 02:04:37 UTC 2018


I am working my way through the exercises in the "Programming in 
D" tutorial (http://ddili.org/ders/d.en/arrays.html).  Why is the 
line assigning the length of the dynamic array required?

/*
Write a program that asks the user how many values will be 
entered and then
reads all of them. Have the program sort the elements using 
sort() and then
reverse the sorted elements using reverse().
*/

import std.stdio;
import std.algorithm;

void main() {
     int noValues, i;
     int[] myArray;

     write("how many values would you like to enter? ");
     readf(" %s", &noValues);
     myArray.length = noValues; // I get a run-time error if I 
comment this out

     while (i < noValues) {
         write("enter value #", i+1, " ");
         readf(" %s", &myArray[i]);
         ++i;
     }

     sort(myArray);
     writeln(myArray);
     reverse(myArray);
     writeln(myArray);

}

Without the line:

myArray.length = noValues;

I get the run-time error:

$ ./exArrays1_1
how many values would you like to enter? 5
core.exception.RangeError at exArrays1_1.d(12): Range violation
----------------
??:? _d_arrayboundsp [0x461772]
??:? _Dmain [0x44c284]

I would have thought that since this is a dynamic array, I don't 
need to pre-assign its length.

Thanks




More information about the Digitalmars-d-learn mailing list