[英]d2: immutability of partially known structures
在 D 中, immutable
是可傳遞的,因此禁止對不可變結構的任何字段進行賦值。 據我所知,不可變的結構變量被強烈保證永遠不會改變,它的所有內容也是如此。
但是,如果我已經聲明了這樣的事情怎么辦?
struct OpaqueData;
immutable(OpaqueData*) data;
D 如何保證未在 D 中實現且可能具有間接性的結構的傳遞不變性?
將這種指向不透明數據的指針封裝在不可變的 class 中的正確方法是什么?
由於您不知道OpaqueData
中的任何字段,因此您不能首先分配給它的任何內容。
當然,您可以通過放棄immutable
(D 確實賦予您這樣做的權力)並為原始 memory 分配一個OpaqueData*
值指向來完全破壞類型系統,但隨后您會問任何問題最終會...如果您不這樣做並尊重您的OpaqueData
指針是immutable
的,則由於類型限定符的傳遞性質,您不能以任何方式更改它。
事實上,這就是它們的全部要點:它們在數學上是可靠的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.