2016-07-15 2 views
4

私は、私とは異なるパッケージ名を持つ他のprotoをインポートしました。他のパッケージからのメッセージを使用するには、そのメッセージにパッケージ名でアクセスしてください。例についてはprotobufでさまざまなパッケージファイルをインポートして使用しますか?

package muthu.test; 

import "other.proto"; 

message MyProto{ 
    required string str = 1; 
    optional muthu.other.Other.val = 2; 
} 

myproto.proto

package muthu.other; 

message Other{ 
    required float val = 1; 
} 

other.protoは のように直接ヴァルmuthu.otherパッケージのを使用する方法はありますオプションのval = 2;代わりに muthu.other.Other.val

これに関するヘルプドキュメントは見つかりませんでした。私を助けてください。

+0

あなたはこれが何を期待しますか? 'val'は' Other'のフィールドです。このフィールドを別のタイプで「使用する」とはどういう意味ですか? –

+0

@KentonVarda私は、protoファイルの代わりに直接パッケージをインポートする方法があることを意味しましたか?だから私は、パッケージ名の前にvalの代わりにvalを使うことができます。 – Muthu

+0

もう一度、 'val'を使って何をしようとしていますか?あなたが与えたコードは意味をなさない。 'val'はフィールドです - 別の型定義の中でそのフィールドを参照するのはどういう意味ですか? –

答えて

2

パッケージ名が同じ場合は、フィールド宣言からパッケージ名を省略できますが、それ以外の方法はありません。 muthu.testを "package muthu.other"を指定して同じパッケージに含めることができれば、それは許可されます。

いるProtobufのGoogleのドキュメントから:

あなたは、プロトコル・メッセージ・タイプの間で名前の衝突を防ぐために、.protoファイルにオプションパッケージ指定子を追加することができます。

package foo.bar; 
message Open { ... } 

あなたのメッセージタイプのフィールドを定義するときは、パッケージ指定子を使用することができます。

message Foo { 
    ... 
    required foo.bar.Open open = 1; 
    ... 
} 
関連する問題