Perfect, just what I was looking for. Thanks much. On Jun 4, 10:27 am, Kenton Varda <[email protected]> wrote: > Use the "has" accessors to determine whether the field was explicitly set. > > Java: message.hasFoo() > C++: message.has_foo() > Python: message.HasField("foo") # (I think; check docs) > > > > On Fri, Jun 4, 2010 at 10:18 AM, Jax <[email protected]> wrote: > > > Thanks for the quick reply -- I noticed this in the documentation > > after searching for default instance: > > > "For embedded messages, the default value is always the "default > > instance" or "prototype" of the message, which has none of its fields > > set." So, does this mean that even the required fields will be set to > > their default values in this prototype object? Or is there some other > > algorithm for the values of the fields within the prototype/default > > instance? > > > For broader context, I'm trying to figure out how to determine if an > > optional field was actually set in the transmitted protocol buffer or > > whether its default value was filled in automatically. > > > In reference to the example below, if the title field had been set to > > "Field of Dreams" and then the user set it to an empty string "", I > > would want to actually update the value in my data store to be the > > empty string. However, if the user didn't change the title field at > > all, I will still see an empty string in the title field when I try > > and get at the field through the accessor. I'm looking for a way to > > setup my protocol buffer format so I can distinguish between those two > > cases. > > > Thanks again. > > > On Jun 4, 9:45 am, Jason Hsueh <[email protected]> wrote: > > > No, protobuf accessors never return null. For message fields, you get the > > > default instance of the message type. > > > > On Fri, Jun 4, 2010 at 9:32 AM, Jax <[email protected]> wrote: > > > > > This should be pretty straightforward, but I couldn't find it in any > > > > of the documentation on default values. > > > > > A slight change from some example code in the google documentation: > > > > > message SearchResponse { > > > > optional Result result = 1; > > > > } > > > > > message Result { > > > > required string url = 1; > > > > optional string title = 2; > > > > repeated string snippets = 3; > > > > } > > > > > My question is, what is the default value for the Result in the above > > > > code? Does it get set to null since (I presume) it will be compiled > > > > into an object when the protocol buffer gets compiled into Java or C#? > > > > Or do default values work differently for a nested message than for > > > > base types? > > > > > -- > > > > You received this message because you are subscribed to the Google > > Groups > > > > "Protocol Buffers" group. > > > > To post to this group, send email to [email protected]. > > > > To unsubscribe from this group, send email to > > > > [email protected]<protobuf%[email protected] > > > > om> > > <protobuf%[email protected] om> > > > > . > > > > For more options, visit this group at > > > >http://groups.google.com/group/protobuf?hl=en. > > > -- > > You received this message because you are subscribed to the Google Groups > > "Protocol Buffers" group. > > To post to this group, send email to [email protected]. > > To unsubscribe from this group, send email to > > [email protected]<protobuf%[email protected] > > om> > > . > > For more options, visit this group at > >http://groups.google.com/group/protobuf?hl=en.
-- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/protobuf?hl=en.
