D的新手!我有两个用于将键/值对输入到AA中的集合函数。一个只带有密钥(K)的密钥,另一个带有一对(K,V)密钥的密钥。
struct SMap(K,V) {
private Nullable!(V)[K] stuff;
void set(K k){ //Issue is with this one
if(k in stuff)
stuff[k].nullify;
}
void set(K k, V v){
if(k !in stuff)
stuff[k] = v;
如果我否定该语句,则会遇到Range错误。我知道在调用nullify时,我会抹去与“ k”配对的值,并且我相信它将isNull设置为true(如果我正确阅读了文档) 如何将'k'插入具有可为空值的键?
SMap!(int,string) sm;
sm.set(2);
非常感谢您的帮助。
答案 0 :(得分:1)
RangeError
对于if(k !in stuff) stuff[k].nullify;
很有意义。您是在说:“如果k
中没有元素stuff
,请对其进行处理。”如果不存在,则无法对其进行任何操作。结束。
更明确地说,您的代码是这样的:
if (k !in stuff) {
auto tmp = stuff[k]; // This line throws RangeError, since there is no element k in stuff.
tmp.nullify();
stuff[k] = tmp;
}
当然,这不是您想要的,您想将其设置为null。我可以建议一下吗?
void set(K k){
stuff[k] = Nullable!V.init;
}
答案 1 :(得分:0)
我最后想出的唯一可行的答案是:
try-except