告别枚举前缀困扰:using enum 如何让代码优雅提升十倍

开发
有了这个可爱的using enum,我们的代码不仅看起来更清爽,写起来也更轻松啦! 这就是 C++20 给我们带来的温暖小惊喜。

哎呀呀,亲爱的小可爱们 🥰,今天让我们来聊一聊 C++20 里面的一个超级贴心的新特性呢 -using enum 声明 ✨。是不是经常被那些烦人的枚举类型前缀搞得头晕脑胀啊? 🤯 感觉敲键盘的手指都要抽筋了呢! 🎹

来来来,让我们一起看看以前写代码时的痛苦时光 😭:

enum class Mood {
    Happy,
    Sad,
    Excited
};

void howAreYou() {
    Mood mood = Mood::Happy;  // 哎呀呀,又要写这个讨厌的 Mood:: 前缀 😫
    if (mood == Mood::Happy) {
        std::cout << "我超开心的啦! ⭐" << std::endl;
    }
}

看到木有? 每次想用个小小的枚举值,都要乖乖地写上那个又臭又长的Mood:: 前缀 😤。感觉就像是写代码的时候,总要带着一个沉重的包袱在跑步一样累死啦! 🏃♂️💨 手指都快敲断啦! ✌️

救星来啦! 🦸♂️

亲爱的小伙伴们~快来看看这个超级可爱的新特性吧! 🌈 有了using enum 这个小可爱后,我们的代码世界立刻变得美好得像撒了糖一样甜蜜 🍬。让我们一起来感受这份清爽吧:

void howAreYou() {
    using enum Mood;  // 快看快看!这个魔法咒语太棒啦! ✨🎯
    
    Mood mood = Happy;  // 哇塞!烦人的前缀不见啦! 🎊
    if (mood == Excited) {  // 代码看起来超级清爽呢~ 🌟
        std::cout << "开心得想跳舞啦! 💃" << std::endl;
    }
}

哎呀呀,是不是感觉整个世界都变得清清爽爽的呢? 🌞 再也不用写那个又臭又长的前缀啦,手指都轻松了好多呢! 🎵 感觉就像是把沉重的书包放下了一样,整个人都轻飘飘的~ 🎈 写代码也可以这么快乐,这就是 C++20 带给我们的小确幸啦! 🌸

在类里也能玩耍哦! 🎮 🌈

亲爱的小伙伴们,你们知道吗?这个超级可爱的using enum 不仅可以在普通函数里使用,在类里面也能发挥它的魔法力量呢! 🧙♀️✨ 让我们一起来看看这个有趣的例子吧:

class GameCharacter {
    enum class State { 
        Standing, 
        Running, 
        Jumping 
    };
    
    using enum State;  // 施展魔法咒语! ✨🎯
    
    void updateState() {
        currentState = Running;  // 哇塞!代码看起来超级清爽呢~ 🍃
        if (currentState == Jumping) {
            // 我们的小角色要起飞啦! 🚀 🌠
        }
    }
    
    State currentState;  // 悄悄记录我们角色的状态 🎭
};

看到了吗?只要在类里轻轻地写上using enum State 这行魔法咒语 🪄,我们就可以直接使用那些可爱的状态名啦!不用再写又臭又长的State:: 前缀了呢~ 感觉整个代码都变得轻盈飘逸,就像跳芭蕾舞一样优雅呢! 💃✨ 这样写代码是不是感觉整个人都变得快乐了起来呀? 🎵 🌸

这个小技巧简直就是给我们的代码加了一对隐形的翅膀,让它变得既漂亮又容易理解,就像给枯燥的代码撒了一把童话般的魔法粉末! 🧚♀️ ⭐️

小心"撞车"哦! 🚗 💫

哎呀呀,小可爱们要注意啦! 👀 在使用这个超级可爱的using enum 的时候,还有一个有趣的小故事要告诉你们呢~ 🎭 就像是在马戏团里面,如果两个小丑穿着一模一样的衣服,观众们可能就分不清谁是谁啦! 🤹♂️ 我们的枚举值也会遇到这样可爱又尴尬的情况呢:

enum class Animal { Cat, Dog };
enum class Pet { Cat, Hamster };

void confusingPets() {
    using enum Animal;
    using enum Pet;    // 哎呀呀,两个 Cat 打架啦! 🙀 喵喵喵~
    
    // auto pet = Cat;  // 可怜的编译器要抓狂啦! 😵💫 "这到底是哪只猫咪呀?" 
}

就像两只可爱的小猫咪抢着同一个逗猫棒玩耍一样 🐱🐱,当我们同时使用两个带有相同名字的枚举值时,编译器就会陷入天人交战的困境啦~ 🌪️ 它就像是一个被问到"你更喜欢爸爸还是妈妈"的小朋友一样,完全不知道该怎么选择才好呢! 🤔✨ 所以我们要像照顾小花园一样,细心地避免这样的"撞车"场面哦! 🌸 🚥

实战小贴士 - 来点有趣的例子吧! 🎯 ✨

哎呀呀,亲爱的小可爱们 🥰,让我们一起来玩点有趣的实战例子吧!今天要给大家展示一下这个超级可爱的using enum 是怎么在实际项目中发光发热的呢~ 🌈

来看看这个超级有趣的游戏引擎例子吧! 🎮

// 在命名空间中玩耍~ 🎪
namespace GameEngine {
    enum class Direction { Up, Down, Left, Right };
    
    class Player {
        using enum Direction;  // 施展魔法! ✨ 让枚举值自由自在地飞翔吧~
        
        void move(Direction dir) {
            switch(dir) {
                case Up:    position.y++; break;  // 小火箭往上飞! 🚀
                case Down:  position.y--; break;  // 小企鹅往下滑~ 🐧
                case Left:  position.x--; break;  // 小兔子往左跳! 🐰
                case Right: position.x++; break;  // 小猫咪往右跑! 🐱
            }
        }
    };
}

// 哎呀,模板类也想玩这个游戏呢! 🎪 🎭
template<typename T>
class StateManager {
    enum class State { Active, Inactive, Pending };
    using enum State;  // 打开魔法开关! 🪄 ✨
    
    void transition() {
        if (currentState == Active) {  // 看看这清爽的代码,就像喝了冰阔落一样爽! 🥤
            // 在这里写一些神奇的状态转换魔法 🔮 ✨
        }
    }
    State currentState;  // 悄悄藏起来的小秘密~
 🤫
};

瞧瞧这些可爱的代码吧! 🎨 是不是感觉整个世界都变得五彩缤纷了呢? 在命名空间里,在模板类里,我们的using enum 都能开开心心地施展魔法 🧙♀️,让枚举值像是撒了糖一样甜蜜可爱~ 🍬

小魔法师的秘密锦囊 🎁 ✨

哎呀呀,亲爱的小可爱们 🥰,来来来~让我偷偷告诉你们一些使用using enum 的小秘密呢!就像魔法师的百宝袋一样,里面藏着好多好玩的技巧哦 🧙♀️ 🌟

首先呢,我们可以像包饺子一样,把using enum 用花括号包起来 🥟,这样它的魔法就不会到处乱跑啦!就像这样:

void processState() {
    {
        using enum GameState;  // 把魔法封印在这个小盒子里 📦 ✨
        // 在这里尽情施展魔法吧!🎮 🌈
    }
    // 出了盒子就安全啦!就像把调皮的小精灵关在魔法瓶里一样~ 🧚♀️ 🔒
}

哦!对了!还有一个超级可爱的用法,就是和 switch 语句一起玩耍 🎪。看看这个日志系统,简直萌到爆炸啦 💝:

enum class LogLevel { Debug, Info, Warning, Error };

void log(LogLevel level, std::string_view message) {
    using enum LogLevel;  // 施展魔法咒语 ✨ 🪄
    switch(level) {
        case Debug:   std::cout << "🐛 小虫虫来帮忙啦~ "; break;
        case Info:    std::cout << "ℹ️ 叮咚!有新消息! "; break;
        case Warning: std::cout << "⚠️ 哎呀呀要小心哦! "; break;
        case Error:   std::cout << "❌ 糟糕,出错啦! "; break;
    }
    std::cout << message << std::endl;  // 把消息传递给世界 🌎 ✉️
}

看看这些可爱的表情符号,是不是感觉连调试信息都变得萌萌哒了呢?🥰 这样写代码简直就像在跟小动物们一起玩耍一样开心呀!🐱 🐰 🦊 每次看到这样的代码,心情都会变得美美的,就像吃到了最爱的糖果一样甜蜜 🍬 ✨

温馨的小结尾 🌟

有了这个可爱的using enum,我们的代码不仅看起来更清爽,写起来也更轻松啦! 这就是 C++20 给我们带来的温暖小惊喜~ 感谢 C++ 委员会的大佬们这么贴心! 🙏✨

记住哦,写代码也可以很优雅,也可以充满乐趣! 下次见啦! 👋

责任编辑:赵宁宁 来源: everystep
相关推荐

2017-09-26 14:56:57

MongoDBLBS服务性能

2022-10-27 07:09:34

DjangoAPIRedis

2023-06-13 13:52:00

Java 7线程池

2024-06-27 11:22:34

2023-09-07 11:29:36

API开发

2017-12-06 08:06:47

IBMGPU机器学习

2023-02-06 07:17:22

2009-06-05 09:11:19

中国电信VDSL2ADSL

2021-09-13 10:25:35

开发技能代码

2018-09-27 15:42:15

Python编程语言技术

2020-09-16 16:07:34

Chrome插件浏览器

2020-11-02 16:20:07

GuavaJava编程语言

2020-07-22 08:30:02

代码开发工具

2024-07-03 08:13:56

规则执行器代码

2021-06-02 22:54:34

技巧 Git Clone项目

2018-01-29 05:38:20

5G4G运营商

2021-04-13 14:25:41

架构运维技术

2024-03-08 07:58:13

QPShttpsync

2019-03-27 13:45:44

MySQL优化技巧数据库

2010-02-03 10:05:48

C++ enum枚举
点赞
收藏

51CTO技术栈公众号