On Thursday, 16 June 2016 at 07:47:03 UTC, abad wrote:
import std.array : appender;
import std.stdio : writeln;

void main() {
    auto app = appender!(char[]);
    app.put('x');
    auto foo = app.data;
    app.clear; // done, start a new array
    app.put('y');
    writeln(foo);
}

This prints out 'y'. It's not surprising because what I suppose app.data is doing is just returning a slice of the dynamic array. Clear() resets the counter of current position. But this behavior is confusing in practical use, IMHO.

Should calling clear in your opinion guarantee that a new array gets allocated?

I don't find it confusing at all, what did you expect?

Reply via email to