【问题标题】:test if an associative array contains a key in D测试关联数组是否包含 D 中的键
【发布时间】:2013-01-30 22:11:20
【问题描述】:

这个问题不言自明;我希望能够在实际插入之前检查关联数组是否包含我即将(可能)插入的值。有没有一种简单的方法可以在不搜索dict.keys 的情况下做到这一点?也许像if (dict.contains(val)) ... 这样的东西?

【问题讨论】:

    标签: d associative-array


    【解决方案1】:

    要测试 key 是否在关联数组中,请使用 in 运算符:

    string[int] aa;
    
    string* ps = 100 in aa;
    
    if(ps)
    {
        // 100 is a key in aa, ps is a pointer to the corresponding value
    }
    else
    {
        // 100 is not a key in aa
    }
    

    要测试是否存在,您必须搜索aa.values

    【讨论】:

    • 值得注意的是,当且仅当指针is null
    • 我认为编写该代码的常用方法是if(auto v = key in aa) { fn(*v); } else { ... }
    【解决方案2】:
    if (!dict.get(key, null))
         dict[key] = val;
    

    【讨论】:

    • 不起作用,因为null 可能是dict 中的有效值;你可以调用dict[key] = null;,然后key in dict 将返回true
    • @beeryboy 能不能用得看情况
    猜你喜欢
    • 1970-01-01
    • 2015-11-12
    • 1970-01-01
    • 2014-09-05
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    相关资源
    最近更新 更多