2010-09-22 1 views
3

Позвольте мне сделать это ясно, у меня есть это перечисление:Сравните перечисление без учета его аргументы

enum Token { 
    Number(v:Float); 
    Identifier(v:String); 
    TString(v:String); 
    Var; 
    Assign; 
    Division; 
    // and so on 
} 

Я хочу, чтобы проверить, если значение переменной является идентификатором, но это не работает:

if(tk == Token.Identifier) { 

это только позволяет мне сравнивать значения, если передать аргументы:

if(tk == Token.Identifier('test')) { 

Но это будет соответствовать только если я dentifier - это «тест», но я хочу соответствовать любому идентификатору.

ответ

6
Type.enumConstructor(tk) == "Identifier" 

Прочитать Type doc для получения дополнительных методов для перечисления.

+0

Спасибо! // 15 символов – 2010-09-22 20:43:17

4

альтернативно:

static function isIdentifier(token : Token) return switch(token) { case Token.Identifier(_): true; default: false; } 

Использование "с помощью" вы также должны быть в состоянии сделать:

if(tk.isIdentifier()) {