digitalmars.D.learn - What is the preferred method for testing the existence of a key in an
- Gary Willoughby (2/2) Sep 13 2013 What is the preferred method for testing the existence of a key
- Adam D. Ruppe (12/14) Sep 13 2013 I use the in operator:
- Gary Willoughby (2/3) Sep 13 2013 Aha! ta.
- Orvid King (10/12) Sep 13 2013 Well, I usually do it as:
- Jacob Carlborg (5/13) Sep 14 2013 That doesn't work with generic code. I mean, -3 can be a legal value.
What is the preferred method for testing the existence of a key in an associative array?
Sep 13 2013
On Friday, 13 September 2013 at 14:03:48 UTC, Gary Willoughby wrote:What is the preferred method for testing the existence of a key in an associative array?I use the in operator: if(key in aa) { there } if(key !in aa) { not there} You can also fetch the pointer right there too: if(auto pvalue = key in aa) { auto value = *pvalue; // go ahead and use it }
Sep 13 2013
On Friday, 13 September 2013 at 14:06:50 UTC, Adam D. Ruppe wrote:I use the in operator:Aha! ta.
Sep 13 2013
On Friday, 13 September 2013 at 14:03:48 UTC, Gary Willoughby wrote:What is the preferred method for testing the existence of a key in an associative array?Well, I usually do it as: int[string] someCache; int getValue(string key) { if (auto val = key in someCache) return *val; return someCache[key] = -3; }
Sep 13 2013
On 2013-09-13 16:17, Orvid King wrote:Well, I usually do it as: int[string] someCache; int getValue(string key) { if (auto val = key in someCache) return *val; return someCache[key] = -3; }That doesn't work with generic code. I mean, -3 can be a legal value. There are many types that doesn't have an invalid value, like pointers do. -- /Jacob Carlborg
Sep 14 2013
On Saturday, 14 September 2013 at 10:50:17 UTC, Jacob Carlborg wrote:On 2013-09-13 16:17, Orvid King wrote:I don't understand. What doesn't work? If the key exists, val !is null, if it doesn't, val is null.Well, I usually do it as: int[string] someCache; int getValue(string key) { if (auto val = key in someCache) return *val; return someCache[key] = -3; }That doesn't work with generic code. I mean, -3 can be a legal value. There are many types that doesn't have an invalid value, like pointers do.
Sep 14 2013
On Saturday, 14 September 2013 at 11:32:23 UTC, simendsjo wrote:On Saturday, 14 September 2013 at 10:50:17 UTC, Jacob Carlborg wrote:I guess, he means your default value -3 isn't appropriate for all types.On 2013-09-13 16:17, Orvid King wrote:I don't understand. What doesn't work? If the key exists, val !is null, if it doesn't, val is null.Well, I usually do it as: int[string] someCache; int getValue(string key) { if (auto val = key in someCache) return *val; return someCache[key] = -3; }That doesn't work with generic code. I mean, -3 can be a legal value. There are many types that doesn't have an invalid value, like pointers do.
Sep 14 2013