V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
MrVito
V2EX  ›  Google

protobuf 3 里面为什么没有 has_field

  •  
  •   MrVito · Sep 27, 2018 · 5340 views
    This topic created in 2777 days ago, the information mentioned may be changed or developed.

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

    3 replies    2018-09-27 11:31:53 +08:00
    zhs227
        1
    zhs227  
       Sep 27, 2018
    protobuf3 的官方说明里提到,为了节省传输大小,对于默认值采用不传输的方式。在你取到一个字段为默认值的时候,你无法了解到发送端是否有主动设置这个字段。
    你可以直接解析,如果不是默认值表示被设置过了。
    MrVito
        2
    MrVito  
    OP
       Sep 27, 2018
    @zhs227 问题就在于有时候,值是我主动设置的,恰好为默认值了,有时候是我没有设置,我需要在主动设置的时候,做一些处理,这怎么办?
    zhs227
        3
    zhs227  
       Sep 27, 2018
    不要用 0 做为默认值。保值有值传送的情况下,一定要设置。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3498 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 57ms · UTC 00:10 · PVG 08:10 · LAX 17:10 · JFK 20:10
    ♥ Do have faith in what you're doing.