变量i在编译时无法读取

时间:2016-10-07 15:23:31

标签: d

我有这段代码:

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

有人可以解释一下,我的代码有什么问题吗?感谢。

1 个答案:

答案 0 :(得分:0)

这就是答案:代码只是引用了错误的变量。它给出错误的原因是T [i]试图从编译时类型列表中获取索引...这也需要我在编译时可用。但是,因为我是一个常规变量,所以它不是。 (你可以编译时间变量btw - 函数的结果可能是CT evaled,或者foreach上的索引是静态列表,还是枚举值。)但是,这里需要的是数组的运行时索引。 ..所以值是正确的符号,因为它是数据而不是类型。

Adam D. Ruppe