Xlua使用Proto协议如何判断一个Optional字段的值是否存在

目前的蠢办法就是直接调用值,如果是nil那就是不存在,有没有类似lua-protobuff那样的判断接口 Data:hasProperty("x")

这是我加载pb和解析proto的代码

local pb = require "pb"
local protoc = require "Battle/Internal/protoc"
local pcNew = protoc.new()

local bytes = x:LoadBytes()
assert(pcNew:load(x,"x.proto"))
local SCEnterBattle = assert(pb.decode('x', bytes))
SCEnterBattle.battleId是否存在?
battleId这个协议字段是Optional的
如何判断SCEnterBattle.battleId值是否存在

主要问题在于,你用的 哪个版本的proto?

proto2支持optional字段,是存在has_field方法的,不同语言命名可能不同。

proto3自3.15版本之后,才支持optional字段,使用同proto2,请更新。关于xlua语言的,可以去官方找。

学习一下