2013-11-24 159 views
1

我只是在尋找這個問題的答案時偶然發現了this topic從值中獲取枚舉名稱?

本質上,我問的是與該線程完成的相反。我不想通過它的名字獲得枚舉的價值,而是希望通過它的名字來得到它的名字。這是如何完成的?

+1

枚舉可設定彼此相等:'枚舉{白,灰色= 1,灰色= 1,黑色};'。它們可以使用命名枚舉來構建:enum {user = 4,group = 2; over = 1;}'可以操作這些:'enum all = user | group |其他;'你會如何轉換7''所有「'這裏> –

+0

@EricJablow我猜不是...:/ –

回答

5

你這樣做完全一樣的原因,但埃裏克指出,它並不完美:

import std.conv; 
import std.stdio; 

enum LogLevel { ALL, INFO, WARNING } 
enum Color {white, gray = 1, grey =1, black} 

void main() 
{ 
    enum l = to!LogLevel(1); 
    assert(l == LogLevel.INFO); 
    writeln(to!string(l)); 

    enum c = to!Color(1); 
    writeln(to!string(c)); 
} 

INFO 
gray 
+0

這是非常非常非常好的答案。交換機中不需要很多情況。不需要X宏。沒有風險忘記在函數中更新枚舉值並返回錯誤的名稱。 – Jack