Имена полей протобуфа с номерами заглавными буквами неожиданным образом - PullRequest
0 голосов
/ 24 октября 2018

У меня есть сообщение:

message Image {

    string link_40dp = 1;
}

После компиляции в Java имя поля будет link40Dp (первая буква после числа начинается с заглавной буквы).Но я ожидаю, что имя поля будет link40dp (d в нижнем регистре).

Это ожидаемое поведение или ошибка?Существуют ли другие подобные случаи?

Я использую Protobuf Gradle Plugin v0.8.5 и Protoc v3.6.1 для генерации сообщений в Java.

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Я просмотрел источники и обнаружил, что это ожидаемое поведение.

См. код заглавной буквы.Все правила использования заглавных букв можно найти в фрагменте кода.

0 голосов
/ 24 октября 2018

Имя поля было преобразовано из регистр змеи (с подчеркиванием) в регистр верблюда (с заглавными буквами слога).

Следовательно, для link_40dp верблюжий чемодан доставил бы "link" + capitalize("40dp").Где прописная буква (строка) превратит первую букву в заглавную.

Библиотека общего достояния Apache будет использовать заглавную букву "40dp" как "40dp" (без изменений), но, очевидно, здесь«умная» заглавная буква пропускает цифры.

Это по крайней мере означает, что исходная строка содержала подчеркивание: link_40dp, link4_0dp или link40_dp.

Так что это ожидаемое поведениехотя и довольно неожиданно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...