Thread overview | |||||||||
---|---|---|---|---|---|---|---|---|---|
|
September 13, 2013 What is the preferred method for testing the existence of a key in an associative array? | ||||
---|---|---|---|---|
| ||||
What is the preferred method for testing the existence of a key in an associative array? |
September 13, 2013 Re: What is the preferred method for testing the existence of a key in an associative array? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Gary Willoughby | 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
}
|
September 13, 2013 Re: What is the preferred method for testing the existence of a key in an associative array? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Gary Willoughby | 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;
}
|
September 13, 2013 Re: What is the preferred method for testing the existence of a key in an associative array? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Adam D. Ruppe | On Friday, 13 September 2013 at 14:06:50 UTC, Adam D. Ruppe wrote:
> I use the in operator:
Aha! ta.
|
September 14, 2013 Re: What is the preferred method for testing the existence of a key in an associative array? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Orvid King | 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 |
September 14, 2013 Re: What is the preferred method for testing the existence of a key in an associative array? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jacob Carlborg | On Saturday, 14 September 2013 at 10:50:17 UTC, Jacob Carlborg wrote:
> 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.
I don't understand. What doesn't work? If the key exists, val !is null, if it doesn't, val is null.
|
September 14, 2013 Re: What is the preferred method for testing the existence of a key in an associative array? | ||||
---|---|---|---|---|
| ||||
Posted in reply to simendsjo | 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:
>> 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.
>
> I don't understand. What doesn't work? If the key exists, val !is null, if it doesn't, val is null.
I guess, he means your default value -3 isn't appropriate for all types.
|
Copyright © 1999-2021 by the D Language Foundation