associative array: unexpected results after static initialization
Steven Schveighoffer
schveiguy at yahoo.com
Fri Dec 1 16:59:08 UTC 2017
On 12/1/17 11:23 AM, H. S. Teoh wrote:
> On Fri, Dec 01, 2017 at 04:06:50PM +0000, kdevel via Digitalmars-d-learn wrote:
>> On Friday, 1 December 2017 at 00:42:00 UTC, H. S. Teoh wrote:
>>> Here's the fix:
>>>
>>> https://github.com/dlang/druntime/pull/1980
>>
>> And wouldn't it be reasonable to add
>>
>> assert(aa.values == [ "b" ]);
>>
>> to the unittest?
>
> I did think about adding that, but then I didn't want the unittest to
> dictate which value should take precedence when there are duplicate
> keys, since that is currently implementation-dependent. At the very
> least, it merits further discussion.
1. If there is going to be an "implementation defined" ambiguity, then
nobody should ever use it, and it should be an error. This would mean a
runtime error, since the keys may be runtime values.
2. I can think of possible (and questionable) reasons one may put in
duplicate keys in an AA, like if they are defined separately (i.e. you
use 2 symbols as keys that are sometimes the same, sometimes different,
and the result is some defined order)
3. I can't think of a reason why anyone would implement the AA filling
algorithm other than foreach-ing over the keys and values.
So I would say we should define that the last key/value combo takes
precedence, and it would be good to ensure that's the case with a test.
-Steve
More information about the Digitalmars-d-learn
mailing list