通过尝试
我想通了struct PropertyTest
{
@property int x() { return val; }
@property void x( int newVal ) { val = newVal; }
void test()
{
int j;
j = x;
x = 5;
}
private:
int val;
}
当我离开@property
时,完全相同。一切都很好。那么将函数声明为@property
是什么意思?
BTW,我正在使用dmd2编译器。
答案 0 :(得分:9)
他们在没有@property
的情况下工作的原因是因为在@property
允许属性方法语法之后添加了-property
。将@property
添加到DMD命令行会强制使用-property
注释。出于向后兼容性原因,它不是默认设置。有一天它会成为默认值(或者他们说),所以最好用{{1}}进行编译,以确保正确地进行注释。
答案 1 :(得分:1)
它允许你使用没有括号的无参数方法(比如读取变量),它允许你调用没有括号的单方法,就像你赋给变量一样。
@property int foo() { ... }
@property void bar(int x) { ... }
void main()
{
bar = foo;
}
您应该将-property
指定为编译器的命令行选项。