是否可以防止在D2中非传递地重新分配变量?
例如:
final int[] a = [0];
a[0] = 1; // OK.
a = []; // ERROR.
我在这里只看到const
和immutable
:
http://www.dlang.org/const3.html
答案 0 :(得分:6)
没有。你所拥有的是const
和immutable
,它们是传递性的(如果不是,它们真的不会起作用)。你可以做到
const(int)[] a = [0];
a[0] = 1; // ERROR.
a = []; // OK;
但不是你要找的东西。
当const
和immutable
具有传递性时,编译器可以提供更好的保证。此外,immutable
实际上对线程没有任何用处(其存在的主要原因之一),除非它是可传递的,并且因为任何immutable
必须能够const
,{ {1}}也必须是传递性的。因此,必要时,它们不能用于简单地防止可变重新分配。并且语言中没有其他构造用于此。