2014-02-01 2 views
2

У меня есть тип enum, и я хотел бы преобразовать целочисленное значение в этот тип. Это не работает:Преобразование int в соответствующее значение enum на основе значения элемента

enum Code 
{ 
    OK = 200, 
    FAILURE = 400 
} 

auto c = to!Code("200"); 

, но это:

enum Code 
{ 
    OK = 200, 
    FAILURE = 400 
} 

Code c = to!Code("OK"); 

Кажется, что to!(T) делает преобразование на основе имени участника ENUM, а не по значению. Итак, я попробовал это, и это работает:

Code c = cast(CodeEnum)200; 

Является ли это действительный (и единственный) способ сделать это преобразование?

ответ

3

Мне кажется, что проблема в другом месте. Это ведет себя, как ожидается, с МДД 2.064 (проверено на DPaste)

import std.conv; 
import std.stdio; 

enum Code 
{ 
    OK = 200, 
    FAILURE = 400 
} 

void main() 
{ 
    auto c = to!Code(200); 
    writeln(c); 
} 

(link for convenience)

Вы уверены, что основные типы для Code и аргумент to!Code те же в вашем случае? Это требование для преобразования.

+0

Да, проблема была где-то еще! Я эффективно выполнял 'to! Code (« 200 »);' который выполнял поиск по строке! Благодаря! –

Смежные вопросы