Properties 在Vala中定义只读属性的更好方法
通过阅读Vala文档,我发现有一个定义属性的简写:Properties 在Vala中定义只读属性的更好方法,properties,readonly,vala,Properties,Readonly,Vala,通过阅读Vala文档,我发现有一个定义属性的简写: public class Person : Object { public int age { get; set; default = 32; } } 我试图通过删除set来定义只读变量,但我得到一个编译错误,必须定义getter。我已经求助于使用手写形式: public class Person : Object { private int _age = 32; public int age { g
public class Person : Object {
public int age { get; set; default = 32; }
}
我试图通过删除set来定义只读变量代码>,但我得到一个编译错误,必须定义getter。我已经求助于使用手写形式:
public class Person : Object {
private int _age = 32;
public int age {
get { return _age; }
}
}
有没有一种方法可以使用简写符号来定义setter?没有。如果你可以只做public int{get;}
,那么这个值从哪里来
您可能想要的是:
public class Person : Object {
public int age { get; private set; }
}
我设置了一个默认值,比如public int age{get;default=32;}
。我的假设是Vala很聪明,可以设置初始值,但不会公开setter方法代码>会更有意义。您可以在实现中使用getter而不使用setter,因为您可以计算值(例如,从age_in_days字段)或从其他任何地方获取值。然而,对于自动getter,我真的无法想象它有什么意义。在这种情况下,该值可能来自绕过(不存在的)setter,让所属类直接访问支持变量。这不是瓦拉的工作方式,但我更喜欢这样。工作时,private set
对我来说有点多余。