Closed piever closed 2 years ago
Please note that d.values
is not equivalent to values(d)
because upon deletion the arrays have holes in them, which are skipped on iteration. So length(values(d)) == 3
but length(d.values) == 4
in this case. In 0.3.16 there were definitely bugs, but the described behavior here is now as intended and seems correct to me.
Does that make sense?
Ah I see, yes it definitely makes sense that the array stored in d.values
is an implementation detail, and it does makes sense to leave holes in it (rather than moving everything around) where removing an entry.
I've run into the following bug when calling
unset!
on aDictionary
. Somehow the values of the dictionary get corrupted, but it only happens with some data types.On Dictionaries 0.3.16 this caused
collect(pairs(d))
to fail (with access to undefined reference), but now (v0.3.17) that seems to work. Opening this in case it is worrisome thatd.values
andvalues(d)
do not have the same content.