Just to echo this, I think that having empty fields be
distinguishables from ones set to the default value is an immensely
useful feature, irrespective of whether the field is a primitive type
or not. I know I've used it lots of times.

On Wed, Jul 1, 2015 at 4:28 PM, John C. <j...@excelfore.com> wrote:
> My understanding is that if a primitive field is empty in a v3 message then
> it will give 0 which is indistinguishable from a field that is actually 0.
> From what I have read is this is done to enable support of a wide range of
> languages, but how is this a well reasoned solution to this problem?  The
> response to me might be "well just explicitly include a 'has_field' boolean
> to indicate the presence of a field", but I have messages with many optional
> fields and adding a "has_xxx" field for each makes the message definition so
> ugly that I feel overcome by waves of nausea.  What initially attracted me
> to protocol buffers is the ability to define messages in a single place
> rather than using say JSON where the protocol can easily end up being
> distributed over multiple source files.
>
> My solution for this big problem is an ugly hack but better than any other
> ugly hack:  for primitive fields code the value as (val*2) | 1.  This
> guarantees all present fields are non-zero so empty fields can be detected.
> I think a better solution would be to, at least, have an API that I can use
> to determine if a field is present or not.  Since the v3 work is still in
> alpha, my hope is that someone comes to their senses.
>
> If not for the much better Ruby performance with v3 I would stick with v2
> but the improvement is undeniable so v3 with ugly hack it is for now.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Protocol Buffers" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to protobuf+unsubscr...@googlegroups.com.
> To post to this group, send email to protobuf@googlegroups.com.
> Visit this group at http://groups.google.com/group/protobuf.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to protobuf+unsubscr...@googlegroups.com.
To post to this group, send email to protobuf@googlegroups.com.
Visit this group at http://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.

Reply via email to