D - assocative array defaults?
- Patrick Down <pat codemoon.com> Jul 31 2002
- Burton Radons <loth users.sourceforge.net> Jul 31 2002
- Pavel Minayev <evilone omen.ru> Jul 31 2002
I'm a little surprised that this does not throw
an error. It prints a = 0. When an assocative array
doesn't have a key does it return the type.init
value?
int main(char[][] args)
{
int[char[]] intmap;
int a = intmap["betty"];
printf("a = %d\n",a);
return 0;
}
Jul 31 2002
Patrick Down wrote:I'm a little surprised that this does not throw an error. It prints a = 0. When an assocative array doesn't have a key does it return the type.init value?
Yup. You can use the "in" operator to make the check yourself. I see the reasons as being: - Exceptions are far more expensive than normal execution, so exception-dependent operations are avoided. - Most language-based exceptions should be turned off when all debugging is killed, but this would alter normal execution here. - It's often convenient. If you're treating it as a set, for example, then just normal testing tells you whether an object is included in it. For objects, you can get the in and the what at the same time without having to build a try/catch around it. But it should be noted in the standard.int main(char[][] args) { int[char[]] intmap; int a = intmap["betty"]; printf("a = %d\n",a); return 0; }
Jul 31 2002
On Thu, 1 Aug 2002 02:12:31 +0000 (UTC) Patrick Down <pat codemoon.com> wrote:I'm a little surprised that this does not throw an error. It prints a = 0. When an assocative array doesn't have a key does it return the type.init value?
In fact, it _does_ create a key and initializes it with default value. This is a typical behaviour for associative array in most languages, including std::map.
Jul 31 2002









Burton Radons <loth users.sourceforge.net> 