D中是否可能有一个可变数组,其长度在编译时未知,所以具有静态长度?

void testf(size_t size) {
    int immutable([]) testv = new int[](a);
}

最佳答案

不,至少不是这样,除非您提供自己的数组包装器。您可以执行以下操作:

struct ImmutableLength {
     int[] array;
     alias array this; // allow implicit conversion to plain array
     this(int[] a) { array = a; } // initialization from plain array
     @property size_t length() { return array.length; }
     @disable @property void length(size_t) {}
     @disable void opOpAssign(string op: "~", T)(T t) {}
     @disable void opAssign(int[]) {}
 }

请注意,禁用的长度 setter 和附加运算符几乎实现了您想要的。
            auto i = ImmutableLength([1,2,3]); // declare it like this

关于arrays - D中不可变长度的可变数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23520298/

10-16 14:34
查看更多