std.array : appender woes

cym13 via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Jun 16 00:59:50 PDT 2016


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?


More information about the Digitalmars-d-learn mailing list