簡體   English   中英

d2:部分已知結構的不變性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM