相关疑难解决方法(0)

为D中的const和非const结构提供@property

我用这种方式定义一个简单的结构:

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.

d const properties

2
推荐指数
1
解决办法
123
查看次数

标签 统计

const ×1

d ×1

properties ×1