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을 사용할 수있다. – Muthu

+0

다시 말하지만,'val'을 (를) 사용하려는 것은 무엇입니까? 당신이 준 코드는 말이되지 않습니다. 'val'은 필드입니다 - 다른 타입 정의 내에서 해당 필드를 참조한다는 것은 무슨 뜻입니까? –

답변

2

패키지 이름이 같으면 필드 선언에서 패키지 이름을 생략 할 수 있지만 다른 방법은 없습니다. muthu.test를 "package muthu.other"를 지정하여 동일한 패키지에 포함시킬 수 있다면 허용됩니다. protobuf의 구글 문서에서

는 :

당신은 프로토콜 메시지 유형 간의 이름 충돌을 방지하기 위해 .proto 파일에 옵션 패키지 지정자를 추가 할 수 있습니다.

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

메시지 유형의 필드를 정의 할 때 다음 패키지 지정자를 사용할 수 있습니다 : 당신이 무엇을 기대

message Foo { 
    ... 
    required foo.bar.Open open = 1; 
    ... 
}