std.array : appender woes
abad via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Jun 16 03:08:49 PDT 2016
On Thursday, 16 June 2016 at 07:59:50 UTC, cym13 wrote:
> 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?
Consider the word clear in this context. What is it that gets
cleared? The data in the array (which might imply reallocation)?
Nope, what gets "cleared" is the index to current position in the
array. I think 'reset' may have been a better name for the
function.
More information about the Digitalmars-d-learn
mailing list