Sets / associative arrays with void values?
Georg Wrede
georg at nospam.org
Sun Jan 7 10:18:30 PST 2007
Carlos Santander wrote:
> Chris Nicholson-Sauls escribió:
>
>> Jeff M wrote:
>>
>>> On 2007-01-06 16:05:06 -0800, "Vladimir Panteleev"
>>> <tehcybershadow at gmail.com> said:
>>>
>>>> I've been wondering whether D supported sets, or something similar.
>>>> What I have in mind isn't unlike associative arrays, but without
>>>> values: an unordered list with quick look-up and simple
>>>> addition/removal of elements, yet still capable of enumeration, etc.
>>>>
>>>> I followed my intuition and tried to declare an associative array
>>>> with a "void" value type:
>>>>
>>>> void[int] foo;
>>>>
>>>> To my surprise, it compiled. And even the "in" operation and the
>>>> .keys and .values properties worked fine (or as fine as they can
>>>> work with an empty associative array).
>>>>
>>>> Of course, the question comes: how would one add keys to such a
>>>> construct? The practical answer is obvious: use a real "dummy" data
>>>> type (bit, for example) as the value type, but I find it a shame
>>>> that declaring such constructs is allowed - yet you can't really
>>>> use them.
>>>
>>>
>>> It would be nice if a "void[int]" array was usable. Associative
>>> arrays are create-on-access, so "foo[5];" should be a legal for
>>> creating an index in the array, but this throws an error.
>>>
>>> -- Jeff
>>>
>>
>> Actually I'm pretty sure create-on-access was removed several releases
>> back? And I also thought the compiler no longer allowed a void value
>> type for associative arrays, but I guess I was wrong on that one.
>>
>> -- Chris Nicholson-Sauls
>
>
> That's true.
> Back then, I used "void[T]" as a set, but since the change, I use "T[T]".
> BTW, since "void[T]" is mostly useless (for the reasons stated above),
> would it be reasonable for the compiler to flag such a declaration as an
> error?
Or defined as a declaration of a set.
More information about the Digitalmars-d
mailing list