On 10/19/2010 1:46 PM, Ian Kelly wrote:
On Tue, Oct 19, 2010 at 5:37 AM, Dave Angel <da...@ieee.org
<mailto:da...@ieee.org>> wrote:
On 2:59 PM, dex wrote:
Using strong references, I have to remove room B from list of rooms,
and also remove door to room B, as it holds reference to room B.
To do
that, I have to keep list of doors that lead to room B.
Using weak references, I don't have to worry about removing all
doors
to room B. They all now have a dead reference, which better models
actual situation. If part of mine collapses, or if a module on space
station is destroyed, the passage to that location does not
magically
vanish - it's just obstructed.
Can you please tell me if there's something wrong with my reasoning?
Simply replace room B with a "destroyed room" object. That can be
quite small, and you only need one, regardless of how many rooms are
thus eliminated.
How does this avoid the problem of having to keep a list of doors that
lead to room B? You can't just replace one object with another. You
would have to replace every reference to B with a reference to the new
object. This is no simpler than deleting the references or replacing
them with None.
One should rather *change* (not replace) the room into a 'destroyed
room' or 'collapsed passage' or whatever, that cannot be entered. The
keeps the room around but allows it to be repaired, rebuilt, cleared, or
whatever.
--
Terry Jan Reedy
--
http://mail.python.org/mailman/listinfo/python-list