判断某个值是否在一个枚举值中

proto文件中有如下定义:

enum EquipSlotID // 装备特定位置
{ESI_ARM = 0;     // 武器ESI_GEM = 1;     // 宝物ESI_CLOTHES = 2; // 衣服ESI_BELT = 3;    // 腰带ESI_JEWELRY = 4; // 饰品
}

以前的做法是:

std::set<int> ReserveEquipSlots = {ESI_ARM, ESI_GEM, ESI_CLOTHES, ESI_BELT, ESI_JEWELRY};
...
int slotID = -1;
if (ReserveEquipSlots.find(slotID) == ReserveEquipSlots.end())
{...
}

Protobuf中:

其实,protobuf在生成*.pb.h、*.pb.c时,已经在其中添加了全局函数:
SkillSlotID_IsValid,其实现比较简单:

bool EquipSlotID_IsValid(int value) {switch (value) {case 0:case 1:case 2:case 3:case 4:return true;default:return false;}
}

所以,无需自己再定义一个容器来调用其find函数,直接调用全局的SkillSlotID_IsValid即可。

Protobuf 判断某个值是否在一个枚举值中相关推荐

  1. 判断某值是否属于枚举类中的值_编写高质量可维护的代码之优化逻辑判断

    if else.switch case 是日常开发中最常见的条件判断语句,这种看似简单的语句,当遇到复杂的业务场景时,如果处理不善,就会出现大量的逻辑嵌套,可读性差并且难以扩展. 编写高质量可维护的代 ...

  2. C# 声明枚举、枚举值描述 获取枚举值字符串 根据枚举获取枚举值描述

    一.声明枚举值.枚举值描述 using System.ComponentModel;public enum status {/// <summary>/// 取消/// </summ ...

  3. java动态添加枚举值,实现枚举值的动态扩展

    直接上代码: 加入lombok依赖: <dependencies><dependency><groupId>junit</groupId><art ...

  4. Day 12:枚举值、枚举类

    jdk1.5新特性之-----枚举 问题:某些方法所接收的数据必须是在固定范围之内的,  解决方案: 这时候我们的解决方案就是自定义一个类,然后是私有化构造函数,在自定义类中创建本类的对象对外使用. ...

  5. Java –比较枚举值

    在Java中,可以使用==运算符比较Enum值. 1. Java枚举示例 Language.java package com.mkyong.javapublic enum Language {JAVA ...

  6. C# 简单判断枚举值是否被定义

    C#枚举类有自带的函数用来判断是否被定义: bool IsDefined(Type enumType, object value) IsDefined(Type, Object) 返回一个布尔值,该值 ...

  7. 如何优雅地实现判断一个值是否在一个集合中?

    如何判断某变量是否在某个集合中?注意,这里的集合可能并不是指确定的常量,也可能是变量. 版本0 #include int main(){int a = 5;if(a == 1 || a == 2 || ...

  8. 输入今天是星期几的序号,给今天和昨天赋予枚举值,并输出昨天是星期几的枚举值

    <程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p165 习题6 4.输入今天是星期几的序号(0~6代表星期天至星期六),给今天和昨天赋予枚举值,并输出 ...

  9. mysql 改变枚举值_mysql 改变数据类型为枚举不成功?

    很明显的错误啊,你表里面内容有误,可以先将列gender的内容全部update成female和male,然后再运行这条sql脚本. 以下内容来源:MYSQL中 ENUM 类型 ENUM类型 ENUM ...

  10. php子域枚举,PHP中实现多值枚举

    PHP 枚举 前面的文章中我们介绍了PHP枚举的使用,最近对项目整体进行重构,增加了枚举类的封闭性和安全性,尤其对多值枚举进行了优化. 枚举类 PHPEnum包含三个核心枚举类,分别为: 基础枚举 – ...

最新文章

  1. 目标检测(或分隔)算法Mask R-CNN简介
  2. 迷茫在路口——致我的2014
  3. pdf与图片互相转换
  4. DOM Element节点类型详解
  5. 美国知名DJ 3LAU以1160万美元出售全球首套音乐专辑NFT藏品
  6. 预训练语言模型论文分类整理
  7. mysql sqlserver alter语句区别_SQL ALTER
  8. python在主线程上下文执行_python进线程
  9. 微信小程序跳转微信小程序的实现
  10. linux php adodb,【原创】Linux下php使用adodb对sql Server访问配置
  11. 参考文献格式字号字体_论文格式字体字号要求
  12. 丽江旅游线路规划丽江游玩小贴士丽江游玩攻略花费
  13. 【使用Mac制作手写签名的方法】
  14. 【Java】实现多线程计算阶乘(完整版)
  15. 人工智能没成果,年底的PPT怎么写?腾讯科学家张潼离职的后续讨论
  16. Hermez官方文档翻译(二)开发者-开发指南
  17. 计算机考试分值2017,2017计算机二级考试应试技巧
  18. 什么是蜜罐?底层原理是什么?
  19. 【Java】1、Java 基础入门
  20. acm计算机教育汇刊,ACM 全文数据库

热门文章

  1. 一步步完成FastDFS + Spring MVC上传下载整合示例
  2. SVN Attempted to lock an already-locked dir异常解决方法
  3. 解决Weblogic与Hibernate的jar冲突
  4. php 给图片加水印
  5. Java 编程需要注意的细节
  6. linux和windows下,C/C++开发的延时函数,sleep函数
  7. NUMA与英特尔下一代Xeon处理器学习心得(5)
  8. 点对点(P2P)多线程断点续传的实现(转贴)
  9. 7.大数据架构详解:从数据获取到深度学习 --- 批处理技术
  10. 53. PHP 伪静态(2)