当前位置: 首页 > 知识库问答 >
问题:

protobuf message(c)类是否提供size()和empty()之类的方法?

傅献
2023-03-14

例如,我们定义了一条消息。

message Person {
   int32 age = 1;
   string name = 2;
};

我想以以下方式使用此消息:

Person p;
assert(p.empty());
p.set_age(10);
assert(p.size() == 1);  // True
p.Clear()
assert(p.empty()) // True

这可能吗?

共有1个答案

涂承运
2023-03-14

关于您希望有一个空()函数,您可以将has()函数用于原型3中的可选字段。这是从3.15版开始添加的。这个答案中给出了一个例子。

 类似资料:
  • java文档中提到了以下两点: "类对象在类加载时由Java虚拟机自动构造,并通过调用类加载器中的定义类方法 类的每个实例共享一个类变量,该变量位于内存中的一个固定位置。任何对象都可以改变类变量的值,但是类变量也可以在不创建类实例的情况下被操作。 我的问题是:类方法和类变量是否属于java中的“java.lang.class”对象?

  • 条款4:用empty来代替检查size()是否为0 对于任意容器c,写下 if (c.size() == 0)... 本质上等价于写下 if (c.empty())... 这就是例子。你可能会奇怪为什么一个构造会比另一个好,特别是事实上empty的典型实现是一个返回size是否返回0的内联函数。 你应该首选empty的构造,而且理由很简单:对于所有的标准容器,empty是一个常数时间的操作,但对于

  • 问题 你想给类或静态方法提供装饰器。 解决方案 给类或静态方法提供装饰器是很简单的,不过要确保装饰器在 @classmethod 或 @staticmethod 之前。例如: import time from functools import wraps # A simple decorator def timethis(func): @wraps(func) def wrapp

  • 问题内容: 交互式环境对程序员非常有帮助。但是,Go似乎没有提供它。我的理解正确吗? 问题答案: 不,Go不提供REPL。 但是,正如已经提到的,Go Playground (这是新的URL)非常方便。Go作者也正在考虑向其中添加功能丰富的编辑器。 如果您想要本地的东西,请考虑安装hsandbox。简单地使用来运行该命令将拆分您的终端屏幕(使用),您可以在顶部编写代码,并在每次保存时在底部查看其执

  • 问题内容: 我正在做一个很大的项目,有很多注入。当前,我们正在使用一个类,该类为需要一次的每次注入实现,并且它们大多具有一个行方法。 每当我需要一个新的提供程序时,创建一个新的类就变得很烦人。使用提供程序类比使用方法有什么好处,反之亦然? 问题答案: 据我所知,它们在大多数简单情况下是完全等效的。 无论哪种样式,即使键绑定到类或实例,Guice都可以让您注入和。如果直接获取实例,Guice会自动调

  • 要检查向量是否为空,我可以使用或。我查看了cplike上的签名,但缺乏理解它们的知识。它们如何相互关联?一个实现调用另一个实现吗? 我知道其中一个来自容器库,另一个来自迭代器库,但仅此而已。