Нулевые значения не разрешены для gRPC в Ruby (proto3)

Привет, я использую плагин gRPC Ruby для связи со службой. Определение proto содержит (proto3):

uint32 id = 1;

Но когда я присваиваю идентификатору ноль, он выдает ошибку - ожидаемое число для интегрального поля. Но для строк нулевые значения работают нормально. Как разрешить нулевые значения для целочисленных/плавающих полей?


person shiladitya    schedule 25.05.2016    source источник
comment
Proto3 не допускает пустых значений, поэтому нет смысла устанавливать его равным нулю. Вы можете использовать proto2, если вам нужно присутствие в поле.   -  person Carl Mastrangelo    schedule 08.06.2016


Ответы (1)


Значения по умолчанию для строк в proto3 пусты — https://github.com/google/protobuf/issues/359

Следовательно, он может получить нулевое значение без возврата ошибки, с другой стороны, целые числа имеют значения по умолчанию, равные 0. Попробуйте передать 0, если вы не хотите передавать какое-либо значение.

Предложение: - Если вы не хотите передавать какие-либо кортежи для сообщения, написанного в proto3, вы можете оставить сообщение пустым, что является очень правильным способом определения сообщения.

Например:-

syntax="proto3"
service Foo{
            rpc Index(Empty) Returns(Nothing){}
            }
message Empty{}
message Nothing{}
person susheel    schedule 22.03.2017