V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MrVito
V2EX  ›  Google

protobuf 3 里面为什么没有 has_field

  •  
  •   MrVito · 2018-09-27 10:12:27 +08:00 · 4868 次点击
    这是一个创建于 2267 天前的主题,其中的信息可能已经有所发展或是发生改变。

    刚从 protobuf 2 转过来,发现没有 has_field,不知道该怎么判断一个字段是否被设置过
    不知道有没有 v 友们遇到了类似的问题,有没有好的解决方案?
    感激不尽!

    3 条回复    2018-09-27 11:31:53 +08:00
    zhs227
        1
    zhs227  
       2018-09-27 10:21:30 +08:00
    protobuf3 的官方说明里提到,为了节省传输大小,对于默认值采用不传输的方式。在你取到一个字段为默认值的时候,你无法了解到发送端是否有主动设置这个字段。
    你可以直接解析,如果不是默认值表示被设置过了。
    MrVito
        2
    MrVito  
    OP
       2018-09-27 10:39:25 +08:00
    @zhs227 问题就在于有时候,值是我主动设置的,恰好为默认值了,有时候是我没有设置,我需要在主动设置的时候,做一些处理,这怎么办?
    zhs227
        3
    zhs227  
       2018-09-27 11:31:53 +08:00
    不要用 0 做为默认值。保值有值传送的情况下,一定要设置。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5500 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 02:04 · PVG 10:04 · LAX 18:04 · JFK 21:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.