十万个为什么 [sproto] 局外观察
总体观察:
1. sproto.lua是对外接口, sprotoparser.lua是内部细节, 并且只在sproto.lua中的parse导入和使用一次,从而实现最小关联
2. sprotoparser.lua分析string得到table,并序列化为字节流, 只使用了lpeg和lua标准库, 没额外导入
3. sproto.lua大部分函数都是对sproto.core的C函数的二次封装
关于lua的元表
对于某个对象,设置元表,用于重载操作符,并通过__index和__newindex进行元素访问与设置
关于lua的string.pack
< | 以小端方式存储数值 |
> | 以大端方式存储数值 |
s | 存储字符串长度后存储字符串 |
I | 存储uint数值 |
i | 存储int数值 |