On Sunday, 19 August 2018 at 15:44:07 UTC, QueenSvetlana wrote:
When using the .length property of a dynamic array why does it return the incorrect number of elements after I use the appender?

import std.stdio;
import std.array : appender;

void main()
{
    //declaring a dynamic array
    int [] arrayofNumbers;
    //append an element using the ~= syntax
    arrayofNumbers ~= 1;
    arrayofNumbers ~= 2;
    //print the array
    writeln(arrayofNumbers);

    //Using appender
    auto appendNumber = appender(arrayofNumbers);
    appendNumber.put(10);
    writeln(appendNumber.data);

    writeln(arrayofNumbers.length);

}

Output:

[1, 2]
[1, 2, 10]
2  --- > Should be 3

auto appendNumber = appender(arrayofNumbers);

This returns a separate object. You probably meant to put this for the last line

writeln(appendNumber.length);

Reply via email to