3
測試在d以下特性及d REF返回值
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!"
作爲輸出。
編譯器使用什麼規則來確定是調用第一個還是第二個實現?
確實如此,但是他的第一個@property方法返回了一個'ref int',所以編譯器也可以做類似'auto a = val(); a = 5'。它實際上**不會**用** dmd v2.054 ** **與原始代碼 - 第一個實現被調用。如果你用源文件中的實現切換這些行,那麼調用者被調用......因此,目前dmd似乎簡單地調用了源文件中的第一個實現。 – jpf