3
枚舉不允許在地圖中用作鍵。這裏的PaxType是一個枚舉,不允許用作關鍵字。協議緩衝區3:在地圖中枚舉爲鍵
enum PaxType {
ADULT = 0 ;
CHILD = 1 ;
INFANT = 2 ;
}
message FlightData {
map<PaxType, FareType> fareType = 1;
}
枚舉不允許在地圖中用作鍵。這裏的PaxType是一個枚舉,不允許用作關鍵字。協議緩衝區3:在地圖中枚舉爲鍵
enum PaxType {
ADULT = 0 ;
CHILD = 1 ;
INFANT = 2 ;
}
message FlightData {
map<PaxType, FareType> fareType = 1;
}
這是不允許的,因爲它不能很好地與proto3開放枚舉語義玩。例如,在Java中,如果您有Map,則該鍵只能是其中一個定義的值。如果碰巧從遠程客戶端/服務器接收到的枚舉鍵值不在定義的值集中,則不能將其放入映射中。這個限制迫使我們使用未知的枚舉鍵(這違反了proto3打開的枚舉語義)放棄映射條件,或者不允許enum作爲映射鍵一起使用。
僅供參考:https://groups.google.com/forum/#!topic/protobuf/ikeldBe60eI