starwing / lua-protobuf

A Lua module to work with Google protobuf
MIT License
1.73k stars 387 forks source link

support encode default values #158

Closed sundream closed 3 years ago

sundream commented 3 years ago

use pb.option "enable_encode_default_values" and pb.option "no_default_values" can distinguish 'default value' and 'nil' see #136

starwing commented 3 years ago

这个option的具体语义是啥……?

sundream commented 3 years ago

enable_encode_default_values含义是: 编码时默认值也参与序列化,这样解码时结合no_default_values语义就能区分: 编码时是传递了默认值还是传nil了

starwing commented 3 years ago

那可以考虑去掉"enable_",不然选项太长了。另外可能需要看看这个选项和一堆default_values选项的正交性,看看有没有机会合并进其他选项,最后还需要更新一下文档。这些都OK了应该就可以合并了,然后我来出个新版本~多谢贡献代码!

coveralls commented 3 years ago

Coverage Status

Coverage increased (+0.005%) to 99.658% when pulling 88e837df69e4f1ba4cc0fbc451b5e9d12647988a on sundream:master into 3f2d706aca7b57c3ffc27daf85c03c7d21a21f7c on starwing:master.

sundream commented 3 years ago

改了,增加了两个选项 | encode_default_values | 默认值也参与编码 | | decode_default_array | 对于数组,将空值解码为空表 |

starwing commented 3 years ago

好像没加对应的no_选项?另外嵌套if那块可以改成&&串联,这样(我个人觉得,当然不改也无所谓)看起来清晰些。最后加上对应no_选项的文档就合并啦~多谢了~

sundream commented 3 years ago

no_选项是默认值,加了好像有点多余,确定需要?,我可以加下

starwing commented 3 years ago

已合并!多谢~