我用这种方式定义一个简单的结构:
struct Person{
private string _name;
@property ref string name() { return _name; }
}
Run Code Online (Sandbox Code Playgroud)
该@property注释是真的很酷,但我不知道我应该如何使用它正确.
以上是相当不错的,但我无法传递Person给需要in Person例如的函数:
void fun(in Person p) { ... }
Run Code Online (Sandbox Code Playgroud)
为避免复制,Person我必须声明参数ref,但我不修改它.
那么如何将属性语法与const-correctness结合起来呢?
编辑:要跟进,可以同样适用于循环吗?
void fun(in Person[] people) {
foreach(Person p; people) { ... }
}
Run Code Online (Sandbox Code Playgroud)
现在我不想复制人,但我不能使用,ref Person因为它是常量.所以我必须ref const(Person) p在循环中写入成为loong.