是否有可能在D2中防止不可传递地重新分配变量?

XP1*_*XP1 5 d

是否有可能在D2中防止不可传递地重新分配变量?

例如:

final int[] a = [0];
a[0] = 1; // OK.
a = []; // ERROR.
Run Code Online (Sandbox Code Playgroud)

我只看到const,并immutable在这里: http://www.dlang.org/const3.html

Jon*_*vis 6

号你有什么是constimmutable,他们是传递(他们,如果他们不是真的会无法正常工作).你可以做

const(int)[] a = [0];
a[0] = 1; // ERROR.
a = []; // OK;
Run Code Online (Sandbox Code Playgroud)

但不是你想要的.

编译器可以给时获得更好的保障constimmutable是传递的.而且,immutable除非它是可传递的,并且因为任何immutable必须能够传递的东西,所以它实际上对于线程(其存在的主要原因之一)没有任何用处const,也const必须是传递性的.因此,必要时,它们不能用于简单地防止可变重新分配.并且在语言中没有其他构造用于这样做.