自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

告別枚舉前綴困擾:using enum 如何讓代碼優(yōu)雅提升十倍

開發(fā)
有了這個可愛的using enum,我們的代碼不僅看起來更清爽,寫起來也更輕松啦! 這就是 C++20 給我們帶來的溫暖小驚喜。

哎呀呀,親愛的小可愛們 ??,今天讓我們來聊一聊 C++20 里面的一個超級貼心的新特性呢 -using enum 聲明 ?。是不是經(jīng)常被那些煩人的枚舉類型前綴搞得頭暈?zāi)X脹啊? ?? 感覺敲鍵盤的手指都要抽筋了呢! ??

來來來,讓我們一起看看以前寫代碼時的痛苦時光 ??:

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 不僅可以在普通函數(shù)里使用,在類里面也能發(fā)揮它的魔法力量呢! ??♀?? 讓我們一起來看看這個有趣的例子吧:

class GameCharacter {
    enum class State { 
        Standing, 
        Running, 
        Jumping 
    };
    
    using enum State;  // 施展魔法咒語! ???
    
    void updateState() {
        currentState = Running;  // 哇塞!代碼看起來超級清爽呢~ ??
        if (currentState == Jumping) {
            // 我們的小角色要起飛啦! ?? ??
        }
    }
    
    State currentState;  // 悄悄記錄我們角色的狀態(tài) ??
};

看到了嗎?只要在類里輕輕地寫上using enum State 這行魔法咒語 ??,我們就可以直接使用那些可愛的狀態(tài)名啦!不用再寫又臭又長的State:: 前綴了呢~ 感覺整個代碼都變得輕盈飄逸,就像跳芭蕾舞一樣優(yōu)雅呢! ??? 這樣寫代碼是不是感覺整個人都變得快樂了起來呀? ?? ??

這個小技巧簡直就是給我們的代碼加了一對隱形的翅膀,讓它變得既漂亮又容易理解,就像給枯燥的代碼撒了一把童話般的魔法粉末! ??♀? ??

小心"撞車"哦! ?? ??

哎呀呀,小可愛們要注意啦! ?? 在使用這個超級可愛的using enum 的時候,還有一個有趣的小故事要告訴你們呢~ ?? 就像是在馬戲團里面,如果兩個小丑穿著一模一樣的衣服,觀眾們可能就分不清誰是誰啦! ??♂? 我們的枚舉值也會遇到這樣可愛又尷尬的情況呢:

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

void confusingPets() {
    using enum Animal;
    using enum Pet;    // 哎呀呀,兩個 Cat 打架啦! ?? 喵喵喵~
    
    // auto pet = Cat;  // 可憐的編譯器要抓狂啦! ???? "這到底是哪只貓咪呀?" 
}

就像兩只可愛的小貓咪搶著同一個逗貓棒玩耍一樣 ????,當我們同時使用兩個帶有相同名字的枚舉值時,編譯器就會陷入天人交戰(zhàn)的困境啦~ ??? 它就像是一個被問到"你更喜歡爸爸還是媽媽"的小朋友一樣,完全不知道該怎么選擇才好呢! ??? 所以我們要像照顧小花園一樣,細心地避免這樣的"撞車"場面哦! ?? ??

實戰(zhàn)小貼士 - 來點有趣的例子吧! ?? ?

哎呀呀,親愛的小可愛們 ??,讓我們一起來玩點有趣的實戰(zhàn)例子吧!今天要給大家展示一下這個超級可愛的using enum 是怎么在實際項目中發(fā)光發(fā)熱的呢~ ??

來看看這個超級有趣的游戲引擎例子吧! ??

// 在命名空間中玩耍~ ??
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;  // 打開魔法開關(guān)! ?? ?
    
    void transition() {
        if (currentState == Active) {  // 看看這清爽的代碼,就像喝了冰闊落一樣爽! ??
            // 在這里寫一些神奇的狀態(tài)轉(zhuǎn)換魔法 ?? ?
        }
    }
    State currentState;  // 悄悄藏起來的小秘密~
 ??
};

瞧瞧這些可愛的代碼吧! ?? 是不是感覺整個世界都變得五彩繽紛了呢? 在命名空間里,在模板類里,我們的using enum 都能開開心心地施展魔法 ??♀?,讓枚舉值像是撒了糖一樣甜蜜可愛~ ??

小魔法師的秘密錦囊 ?? ?

哎呀呀,親愛的小可愛們 ??,來來來~讓我偷偷告訴你們一些使用using enum 的小秘密呢!就像魔法師的百寶袋一樣,里面藏著好多好玩的技巧哦 ??♀? ??

首先呢,我們可以像包餃子一樣,把using enum 用花括號包起來 ??,這樣它的魔法就不會到處亂跑啦!就像這樣:

void processState() {
    {
        using enum GameState;  // 把魔法封印在這個小盒子里 ?? ?
        // 在這里盡情施展魔法吧!?? ??
    }
    // 出了盒子就安全啦!就像把調(diào)皮的小精靈關(guān)在魔法瓶里一樣~ ??♀? ??
}

哦!對了!還有一個超級可愛的用法,就是和 switch 語句一起玩耍 ????纯催@個日志系統(tǒng),簡直萌到爆炸啦 ??:

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;  // 把消息傳遞給世界 ?? ??
}

看看這些可愛的表情符號,是不是感覺連調(diào)試信息都變得萌萌噠了呢??? 這樣寫代碼簡直就像在跟小動物們一起玩耍一樣開心呀!?? ?? ?? 每次看到這樣的代碼,心情都會變得美美的,就像吃到了最愛的糖果一樣甜蜜 ?? ?

溫馨的小結(jié)尾 ??

有了這個可愛的using enum,我們的代碼不僅看起來更清爽,寫起來也更輕松啦! 這就是 C++20 給我們帶來的溫暖小驚喜~ 感謝 C++ 委員會的大佬們這么貼心! ???

記住哦,寫代碼也可以很優(yōu)雅,也可以充滿樂趣! 下次見啦! ??

責(zé)任編輯:趙寧寧 來源: everystep
相關(guān)推薦

2017-09-26 14:56:57

MongoDBLBS服務(wù)性能

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開發(fā)

2017-12-06 08:06:47

IBMGPU機器學(xué)習(xí)

2023-02-06 07:17:22

2009-06-05 09:11:19

中國電信VDSL2ADSL

2021-09-13 10:25:35

開發(fā)技能代碼

2018-09-27 15:42:15

Python編程語言技術(shù)

2020-09-16 16:07:34

Chrome插件瀏覽器

2025-03-13 11:59:00

2020-11-02 16:20:07

GuavaJava編程語言

2020-07-22 08:30:02

代碼開發(fā)工具

2024-12-27 12:00:00

C++17枚舉

2024-07-03 08:13:56

規(guī)則執(zhí)行器代碼

2021-06-02 22:54:34

技巧 Git Clone項目

2025-02-24 08:10:00

C#代碼開發(fā)

2018-01-29 05:38:20

5G4G運營商

2021-04-13 14:25:41

架構(gòu)運維技術(shù)
點贊
收藏

51CTO技術(shù)棧公眾號