[squeak-dev] Set class comment
Nicolas Cellier
nicolas.cellier.aka.nice at gmail.com
Tue Mar 30 12:33:55 UTC 2010
See also probably obsolete http://bugs.squeak.org/view.php?id=6942
Nicolas
2010/3/30 Levente Uzonyi <leves at elte.hu>:
> On Mon, 29 Mar 2010, Casey Ransberger wrote:
>
>> I noticed that the class comment for Set still thinks you can't stick nil
>> in
>> a set. I was going to update it, but I'm a little confused about what's
>> going on in #array.
>
> I'm about to fix the class comments for the HashedCollection hierarchy, but
> help is always welcome, especially from a native english speaker.
>
>>
>> #(#foo # bar #baz nil) asSet array
>>
>> {nil . nil . nil . a SetElement . nil . #foo . #baz . nil . nil . nil .
>> #bar}
>>
>> Can I assume that the SetElement is a stand in for the nil item in the
>> Set?
>
> Yes.
>
>>
>> See below for what I have so far.
>>
>> =================================================
>>
>> As of Squeak 4.1, Sets can contain nil.
>>
>> I represent a set of objects without duplicates. I can hold anything that
>> responds to
>> #hash and #=. My instances will automatically grow, if necessary,
>> Note that I rely on #=, not #==. If you want a set using #==, use
>> IdentitySet.
>>
>> Instance structure:
>>
>> array An array whose non-nil elements are the elements of the set,
>> and whose nil elements are empty slots. There is always at least one nil.
>> In fact I try to keep my "load" at 75% or less so that hashing will work
>> well.
>
> This also applies for Dictionary, so it'd be better in the comment of
> HashedCollection IMHO.
>
>>
>> tally The number of elements in the set. The array size is always
>> greater
>> than this.
>
> Same as above.
>
>>
>> The core operation is #findElementOrNil:, which either finds the position
>> where an
>> object is stored in array, if it is present, or finds a suitable position
>> holding nil, if
>> its argument is not present in array,
>
> Same as above, but this is a bit obsolete, #scanFor: is the current lookup
> method, #findElementOrNil: is only a compatibility method now.
>
> I'd be very important to mention that the objects' hash must not change
> while they are added to a set, otherwise the set becomes invalid. If that
> happens #rehash can be used to fix it.
>
>
> Levente
>
>>
>
>
More information about the Squeak-dev
mailing list
|