我有这段代码:
class Set(T){
private T[] values;
T get(uint i){
return ((i < values.length) ? T[i] : null);
}
...
当我尝试这样使用这个类时:
set.Set!(int) A;
编译器在return
行给出错误:set.d|9|error: variable i cannot be read at compile time
有人可以解释一下,我的代码有什么问题吗?感谢。
答案 0 :(得分:0)
这就是答案:代码只是引用了错误的变量。它给出错误的原因是T [i]试图从编译时类型列表中获取索引...这也需要我在编译时可用。但是,因为我是一个常规变量,所以它不是。 (你可以编译时间变量btw - 函数的结果可能是CT evaled,或者foreach上的索引是静态列表,还是枚举值。)但是,这里需要的是数组的运行时索引。 ..所以值是正确的符号,因为它是数据而不是类型。
Adam D. Ruppe