Нет. То, что у вас есть, это const
и immutable
, и они транзитивны (они действительно не сработали бы, если бы не были). Вы можете сделать
const(int)[] a = [0];
a[0] = 1; // ERROR.
a = []; // OK;
Но не то, что вы ищете.
Компилятор может дать лучшие гарантии, когда const
и immutable
транзитивны. Кроме того, immutable
действительно бесполезен для многопоточности (одна из его основных причин для существования), если только он не транзитивен, и потому что все, что immutable
должно быть в состоянии const
, const
должно быть транзитивным Что ж. Поэтому по необходимости их нельзя использовать для простой защиты от переназначения переменных. И в этом языке нет других конструкций для этого.