3 回答

TA貢獻1886條經驗 獲得超2個贊
allow_alias 允許您為相同的值使用兩個不同的名稱。
但是,它仍然不會允許你使用相同的名稱兩次!
在您從文檔中獲取的示例中,他們只是試圖通過將 allow_alias 設置為 true 來演示如何在相同的枚舉類型中使用 STARTED = 1 和 RUNNING = 1 。他們給出的兩個枚舉示例并不打算在同一個包中使用。
但是,如果您已經在 EnumAllowingAlias 中使用了 RUNNING,則如果它們在同一個包中,則不能在 EnumNotAllowingAlias 中再次使用 RUNNING。

TA貢獻2019條經驗 獲得超9個贊
您正在尋找的答案在錯誤消息中 :) 解析它實際告訴您的內容有點困難。
基本上,什么
枚舉值是它們類型的兄弟,而不是它的孩子
意思是,枚舉值的范圍不是MyEnum.FOO
and MyEnum2.FOO
,而是與 MyEnum 處于同一級別。所以同一個 .proto 文件中的兩個 enum 值不能具有相同的名稱;他們都試圖FOO
在該文件中存在,而不是成為MyEnum.FOO
和MyEnum2.FOO
。

TA貢獻1890條經驗 獲得超9個贊
我不明白你的意思,因為我有兩個名字不同的枚舉,第一個是 EnumAllowingAlias,第二個是 EnumNotAllowingAlias 這是例子
https://developers.google.com/protocol-buffers/docs/proto#enum
在他們解釋的例子之前
“您可以通過為不同的枚舉常量分配相同的值來定義別名。為此,您需要將 allow_alias 選項設置為 true,否則協議編譯器將在找到別名時生成錯誤消息?!?/p>
在這種情況下,我可以創建 2 個這樣的枚舉,編譯器應該首先使用別名創建兩個枚舉,第二個沒有別名,但編譯器在第一個答案中向我發送了錯誤。
- 3 回答
- 0 關注
- 219 瀏覽
添加回答
舉報