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/