On Saturday, 22 June 2013 at 14:19:45 UTC, Diggory wrote:
The problem occurs whenever the internal array is resized
because what actually happens is that a new array is allocated
and the contents copied over - the original Appender still
references the original array (or in this case null). The last
example only works because when you call "put(2)" it actually
allocates an array large enough to hold at least another item
as well.
As usual it can be solved by introducing an extra layer of
indirection, either by passing by ref or by making Appender
store a pointer to a range.
No, it's not that bad, because the "extra layer of indirection"
is already there. The problem is that said layer isn't actually
initialized yet...