我对Vala比较新,我试图手动将一些C#代码移植到vala中,我已经开始用一个简单的例子来测试它。
C#编码器会将下面的代码段识别为1-1映射到C#。
以下是测试vala文件Universe.vala:
namespace Universe
{
public interface Planet
{
string Name { get; }
}
}
我收到编译错误:
Universe.vala:错误:属性getter必须有一个正文
看起来Vala不支持接口中的get(set)ter属性 - 或者我错过了什么?我该如何解决这个问题?
答案 0 :(得分:3)
在Vala接口中仍然可以包含非抽象属性和方法(但没有变量)。这意味着如果要定义抽象属性或方法,仍然需要使用abstract
关键字,就像在抽象类中一样。
由于您未在此处使用abstract
关键字,因此编译器会认为您正在尝试定义非抽象属性。但是,接口中的非抽象属性需要一个显式体(因为默认实现需要使用变量,这是不允许的)。所以这就是为什么错误消息抱怨丢失的身体。
只需添加abstract
关键字即可。