lua 中protobuf repeated 嵌套类 复合类型

PB基础知识科普

syntax = "proto2";
package PB;

message  Item
{
    required string name = 1;
}
message  Role
{
    required string name = 1;
    optional string email = 2;
    repeated string t =3;
    repeated Item item1 = 4;
    optional  Item item2 =5;
}

lua中解析 required  optional  repeated  类型

   require "proto.player_pb"

    local role = player_pb.Role()
    role.name="444"   --require字段

    role.email ="eiail2222222" --optional
    role.t:append("111") --repeated 基本类型

    local tt =role.item1:add() -- repeated 嵌套类 复合类型
    tt.name ="555"

    role.item2.name = "6666" -- optional 嵌套类 复合类型

    local pb_data1 = role:SerializeToString()

    local msg = player_pb.Role()
    msg:ParseFromString(pb_data1)

    print(msg.email.."   "..msg.item1[1].name.."  "..msg.item2.name)

原文地址:https://www.cnblogs.com/U-tansuo/p/lua_protobuf_repeate.html

时间: 2024-08-01 05:20:23

lua 中protobuf repeated 嵌套类 复合类型的相关文章

lua中使用table实现类和继承

--因为只有当读写不存在的域时,才会触发__index和__newindex classA = {className = "classA",name="classAInst"} function classA:new(newobject) newobject = newobject or {} setmetatable(newobject, {__index = self})--当在newobject找不到key对应的value时,就到self(即classA)类中

类中定义的嵌套结构,有什么作用?

class A { struct B; class C { .......... } B* b; public: void f(); void g(); }; 第一是命名空间的问题,在类里面定义的类或者结构不怕重名,比如说模板类每个类都有个iterator嵌套类,重名也不要紧,更大的好处是还可以利用这个特性写模板函数: template<class T, class Func> void foreach(T& container, Func f) { for(T::iterator i

Lua中的闭包

[什么是闭包?] 闭包在Lua中是一个非常重要的概念,闭包是由函数和与其相关的引用环境组合而成的实体.我们再来看一段代码: function newCounter() local i = 0 return function () -- 匿名函数 i = i + 1 return i end end c1 = newCounter() print(c1()) print(c1()) 根据刚刚说的闭包的概念,结合上面的代码,来说说这个概念.闭包=函数+引用环境.上述代码中的newCounter函数返

嵌套类 局部类

嵌套类 局部类 <c++ primer 3th> C++嵌套类 1.   嵌套类的名字只在外围类可见. 2.   类的私有成员只有类的成员和友元可以访问,因此外围类不可以访问嵌套类的私有成员.嵌套类可以访问外围类的成员(通过对象.指针或者引用). 3.   一个好的嵌套类设计:嵌套类应该设成私有.嵌套类的成员和方法可以设为 public . 4.   嵌套类可以直接访问外围类的静态成员.类型名( typedef ).枚举值. 嵌套类 一个类可以在另一个类中定义,这样的类被称为嵌套类.嵌套类是其

C++ Primer Plus(四)——复合类型

只能在定义数组时才能初始化,不能将一个数组赋值给另一个数组,但可以使用下标分别赋值给数组元素,但可以将一个string对象赋值给另一个string对象 如果只对数组的一部分初始化,其他元素自动设置为0 C++11可在初始化的大括号里不包含任何东西,这将把所有元素设置为0 C++11在数组列表初始化时,禁止缩窄转换 C-风格字符串以\0结尾,不是\0结尾的字符数组不是字符串 任何两个由空白(空格,制表符,换行符)分隔的字符串常量都将自己拼成一个 sizeof运算符指出整个数组的长度,而strlen

C++ 嵌套类使用(一)

一.嵌套类 在一个类的内部定义另一个类,我们称之为嵌套类(nested class),或者嵌套类型.之所以引入这样一个嵌套类,往往是因为外围类需要使用嵌套类对象作为底层实现,并且该嵌套类只用于外围类的实现,且同时可以对用户隐藏该底层实现.     虽然嵌套类在外围类内部定义,但它是一个独立的类,基本上与外围类不相关.它的成员不属于外围类,同样,外围类的成员也不属于该嵌套类.嵌套类的出现只是告诉外围类有一个这样的类型成员供外围类使用.并且,外围类对嵌套类成员的访问没有任何特权,嵌套类对外围类成员的

C++学习笔记(十二):类继承、虚函数、纯虚函数、抽象类和嵌套类

类继承 在C++类继承中,一个派生类可以从一个基类派生,也可以从多个基类派生. 从一个基类派生的继承称为单继承:从多个基类派生的继承称为多继承. 1 //单继承的定义 2 class B:public A 3 { 4 < 派生类新定义成员> 5 }; 6 //多继承的定义 7 class C:public A,private B 8 { 9 < 派生类新定义成员> 10 }; 我们这篇主要说单继承. 派生类共有三种C++类继承方式: 公有继承(public) 基类的公有成员和保护成

C++嵌套类(内部类与外部类)

在一个类中定义的类被称为嵌套类,定义嵌套类的类被称为外部类.对类进行嵌套通常是为了帮助实现另一个类,并避免名称冲突. 对类嵌套往往为了帮助实现另一个类,并避免名称冲突.如下: class queue { private: struct Node{ Item item;struct Node *next }; ... }; 由于struct在默认情况下其成员为公有的,   所以Node实际上是一个嵌套类. 作用域 嵌套类的声明位置决定了嵌套类的作用域,即它决定了程序的那部分可以创建嵌套类的对象.

Lua中的函数

[前言] Lua中的函数和C++中的函数的含义是一致的,Lua中的函数格式如下: function MyFunc(param) -- Do something end 在调用函数时,也需要将对应的参数放在一对圆括号中,即使调用函数时没有参数,也必须写出一对空括号.对于这个规则只有一种特殊的例外情况:一个函数若只有一个参数,并且此参数是一个字符串或table构造式,那么圆括号便可以省略掉.看以下代码: print "Hello World" --> print("Hell