On Tue, 10 Apr 2012 11:27:19 +0200, CrudOMatic <crudoma...@gmail.com>
wrote:
hmmmm... so no need for a generic object reference counter. Nice. I was
trying to approach it from a literal sense (e.g. card moves from deck to
player's hand) - when you do the popBack() is that object returned and
deleted from the original array, or just the reference returned and ref
removed from original array?
The reference is returned, and it's still in the array - kind of... Say:
cards is [Card1, Card2]
cards.popBack();
cards is now [Card1], but Card2's reference is still there in position 2.
The length of the array in decremented.
If you try to append a card to cards, the runtime will see you're trying
to write over the reference for Card2, so it will create a new array to
avoid this.
If you use assumeSafeAppend, you say that you don't mind overwriting this
reference.
Remember that as long as you hold a reference to Card2 somewhere, the GC
won't delete the instance even if the reference no longer exists in the
cards array.
I was trying to use literal real-world ideas of objects, and was wanting
the moving so I didn't have weird issues later down the road, like not
knowing why a reference was hanging around. I understand D has a GC, but
sometimes it pays to do management yourself.
A card game doesn't sound like heavy use of the GC, so I don't think that
should be a problem.