2

Dでは、immutableは推移的であるため、不変構造のフィールドへの割り当ては禁止されています。私の知る限り、不変の構造変数は決して変更されないことが強く保証されており、その内容もすべてです。

しかし、私がこのようなことを宣言した場合はどうなりますか?

struct OpaqueData;
immutable(OpaqueData*) data;

Dで実装されておらず、場合によっては間接性を持つ構造の推移的な不変性をDはどのように保証できますか?

不透明(OPAQUE)データへのそのような種類のポインタを不変クラスにカプセル化する正しい方法は何ですか?

4

1 に答える 1

5

のフィールドがわからないため、OpaqueDataそもそもその内容を割り当てることはできません。

もちろん、型システムを完全に破壊することはできimmutableます(Dはそうする力を与えます)、そして生のメモリにOpaqueData*値が指すものを割り当てることによって、あなたはあなたが最終的に起こるどんな問題でも求めていますwith ...これを行わず、OpaqueDataポインタがimmutableであることを尊重する場合、型修飾子の推移的な性質のため、ポインタを変更することはできません。

これは、実際、それらの全体的なポイントです。それらは数学的に健全です。

于 2012-04-08T21:20:30.150 に答える