o(* ̄︶ ̄*)o

  博客园  :: 首页  ::  :: 联系 :: 订阅 订阅  :: 管理

刚入手一份老项目,看见项目里有用到谷歌协议(Protocol Buffers, 简称:PB),并生成lua脚本进行调用,看到一串串的生成代码表示吓坏了。

今天呢,先按自己理解的方式搞懂点语法。

参考博客:http://shitouer.cn/2013/04/protocol-buffers-language-guide/

【数据类型】

  1.枚举(enum)

    感觉跟C语言的枚举一样的用法,不需要定义枚举值的类型直接给予初始值就行。

    特别:如果有两个枚举相同时,则与在其中一个枚举括号中添加

    option allow_alias = true;

  使用示例:

//登录类型
enum _LoginType {
	NORMAL_LOGIN = 1; //正常登录
	AUTO_LOGIN = 2; //快速自动登录
}

//登录类型
enum _LoginType {
        option allow_alias = true;    //区别上面的枚举    
	NORMAL_LOGIN = 1; //正常登录
	AUTO_LOGIN = 2; //快速自动登录
}

  2.消息(messege)

    可以把他看做具有数据的结构体

 

//登录响应
message _LoginResponse {
	required LoginResult result = 1; //登录结果
	optional string userId = 2; // 登录成功下发用户名(用户唯一标识)
	optional string errTip = 3; // 当result为ERR_SHUTDOWN_TIP时的提示信息
	optional bool isBind = 4; ////快速自动登录时,返回是否已绑定
	optional LoginType loginType = 5; //登录类型
}

//括号内部成员 以分号区别开来
// 成员构成 = 关键字 数据类型  字段名 = 数字标签(1~15(一个字节), 16~2047(二个字节))

  3. message中的关键字

    这几个关键字可以看做数据库的限定的建值

    @ required ; 被这个关键字修饰的字段在创建时,必须给该字段赋值,否则系统会抛出异常

       @ optional;    被这个关键字修饰的字段在创建时, 该字段看你的心情给他赋值。你未对其赋值,那么系统会给其赋予默认值0.

           @ repeated;   被这个关键字修饰的字段在创建时,该字段说明会被你反复的摧残,直到被你玩坏位置。(当数组来用吧)

 

【数据类型】

数据类型 说明
double  
float  
int32 32位
int64 64位
uint32  
uint64  
sint32  
sint64  
fixed32  
fixed64  
sfixed32  
 sfixed64  
 bool  
string   
 bytes  包含任意数量顺序的字节
   
   

 ps:不想写了,好累。

posted on 2015-01-07 00:16  熊本熊の熊  阅读(883)  评论(0)    收藏  举报