在Vala中定义只读属性的更好方法

Cri*_*ian 2 properties readonly vala

通过Vala文档阅读,我看到有一个定义属性的简写:

public class Person : Object {
    public int age { get; set; default = 32; }
}
Run Code Online (Sandbox Code Playgroud)

我尝试通过set;从列表中删除来定义只读变量,但是我得到一个编译错误,必须定义getter.我使用了缩写形式:

public class Person : Object {
    private int _age = 32;

    public int age {
        get { return _age; }
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法使用速记符号来定义一个setter?

nem*_*equ 6

public int age { get; },如果你能做到,价值从何而来?

你可能想要的是:

public class Person : Object {
  public int age { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)

  • 但是你也想要一种设置属性的方法,否则`public const int AGE = 32;`会更有意义.您可以将getter与没有setter的实现一起使用,因为您可以计算值(例如,来自age_in_days字段)或从其他任何地方获取它.然而,使用自动吸气器,我真的无法想象它有意义的情况. (3认同)