shared arrray problem

ag0aep6g via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat Nov 19 13:50:06 PST 2016


On 11/19/2016 10:26 PM, Charles Hixson via Digitalmars-d-learn wrote:
> It's worse than that, if they modify the length the array may be
> reallocated in RAM so that the pointers held by the containing class do
> not point to the changed values.  (Read the header comments...it's not
> nice at all.)

Arguably, any D programmer must be aware that appending to a dynamic 
array potentially means making a copy of the data, and that changes to 
length are not visible to other views of the data.

But it's an opportunity to mess up, for sure. You could return a wrapper 
around the array that supports editing the data but not changing the 
length or appending.

Looks like std.experimental.typecons.Final [1] is supposed to be that 
wrapper. But in a little test I can still set the length. Not sure if 
that's a bug, or if Final has slightly different goals.


[1] https://dlang.org/phobos/std_experimental_typecons.html#.Final


More information about the Digitalmars-d-learn mailing list