3

私はValaに比較的慣れていないので、C#コードを手動でvalaに移植しようとしています。それをテストするための簡単な例から始めました。

C# コーダーは、以下のスニペットが C# への 1-1 マッピングであると認識します。

以下はテスト用のvalaファイルであるUniverse.valaです:

namespace Universe
{
    public interface Planet
    {
        string Name { get; }
    }
}

コンパイルエラーが発生します:

Universe.vala: エラー: プロパティのゲッターには本体が必要です

Vala はインターフェイスで get(set)ter プロパティをサポートしていないようです。これを修正するにはどうすればよいですか?

4

1 に答える 1

3

Vala では、インターフェイスには非抽象プロパティとメソッドを含めることができます (変数は含みません)。これは、抽象プロパティまたはメソッドを定義する場合でもabstract、抽象クラスの場合と同様に、キーワードを使用する必要があることを意味します。

ここでキーワードを使用しなかったためabstract、コンパイラは非抽象プロパティを定義しようとしていると判断します。ただし、インターフェイスの非抽象プロパティには明示的な本体が必要です (既定の実装では、許可されていない変数を使用する必要があるため)。そのため、エラー メッセージはボディの欠落について不平を言っています。

キーワードを追加するだけabstractで問題なく動作します。

于 2012-05-09T09:16:58.300 に答える