When are associative arrays meant to throw a RangeError?

Jonathan M Davis jmdavisProg at gmx.com
Sat Feb 18 13:56:27 PST 2012


On Saturday, February 18, 2012 21:54:52 Andrej Mitrovic wrote:
> Returning the default initializer of the value type when the key
> doesn't exist is a bad idea. Consider an integer, it's .init value is
> 0. If I want to check if a value of a key is zero I could easily end
> up with a silent bug:
> 
> int[string] aa;
> aa["foobar"] = 5;
> if (aa["fobar"] == 0) { }  // will always be true
> else { }

Agreed. The fact that C++ did something like this with std::map was one of its 
big mistakes IMHO.

- Jonathan M Davis


More information about the Digitalmars-d mailing list