2009/10/27 Igor Stasenko <[email protected]>:
> 2009/10/26 Schwab,Wilhelm K <[email protected]>:
>> Philippe, Stef,
>>
>> That's fine for Seaside, but what about other users of weak collections?  I 
>> think I have found the weakness (pun intended) in Squeak/Pharo: weaklings do 
>> only half of what they should do.  They (correctly) do not prevent garbage 
>> collection of the objects they reference, but they apparently fail to clean 
>> up after these objects have been finalized.
>>
>> In Dolphin, the following returns an empty array:
>>
>> | map |
>> map := WeakLookupTable new
>>                at:2 put:String new;
>>                yourself.
>> MemoryManager current collectGarbage.
>> map keys asArray.
>>
>>
>> Pharo is content to answer nil from #at:put: but still keep the key:
>>
>> | map |
>> map := WeakValueDictionary new
>>                at:2 put:String new;
>>                yourself.
>> 5 timesRepeat:[ Smalltalk garbageCollect. ].
>> map keys asArray.
>>
>
> and why the key should go away?
> I think that this is an implementation nuance, but not bug or missing feature.
> No-one would expect from dictionary keys to automatically mutate
> depending on the state of the associated values.
> If you want such behavior, why not implement own WeakLookupTable ?
>

suppose, one may want to know, what values became garbage, to do
additional _custom_ processing.
While its currently possible using WeakValueDictionary , it will be
problematic using WeakLookupTable ,
because you wont know what values are gone.

-- 
Best regards,
Igor Stasenko AKA sig.

_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

Reply via email to