在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;
}
Run Code Online (Sandbox Code Playgroud)
收益率"Settter called!"作为输出.
编译器使用什么规则来确定是调用第一个还是第二个实现?
小智 5
在这里,您提供两种@property方法,一种接受参数,另一种不接受.这样做的时候s.val = 5;,你实际上是在做什么s.val(5),但是val是一个@property你可以写的属性,而不是一个方法调用(见http://d-programming-language.org/function.html#property-functions).从s.val(5)编译器可以做标准的重载解析 - 参见http://d-programming-language.org/function.html#function-overloading.
| 归档时间: |
|
| 查看次数: |
223 次 |
| 最近记录: |