Why is dynamic array length required here?
Ali Çehreli
acehreli at yahoo.com
Fri Oct 19 03:27:43 UTC 2018
On 10/18/2018 07:04 PM, Samir wrote:
> myArray.length = noValues; // I get a run-time error if I comment
> this out
It's because the expression that reads the elements below is readf,
which reads on top of an existing element.
> while (i < noValues) {
> write("enter value #", i+1, " ");
> readf(" %s", &myArray[i]);
Aside: It may be possible to read like the following without taking the
address, as readf has been improved to take references since that code
was written:
readf(" %s", myArray[i]); // (not tested)
So, the answer to your question is, we need to set the length of the
array so that there are elements to read on top of. If D had function
templates like getResponse() that I use in the Templates chapter,
http://ddili.org/ders/d.en/templates.html
then the best thing to do would be to append the elements directly to
the array:
// No need to set .length beforehand
myArray ~= getResponse!int(/* ... */);
Ali
More information about the Digitalmars-d-learn
mailing list