D で以下をテストする
import std.stdio;
struct S
{
int _val;
@property ref int val() { return _val; }
@property void val(int v) { _val = v; writeln("Setter called!"); }
}
void main()
{
auto s = S();
s.val = 5;
}
が出力として得"Settter called!"
られます。
コンパイラは、最初の実装と 2 番目の実装のどちらを呼び出すかを決定するためにどのような規則を使用しますか?