2010-09-22 26 views
3

Permettez-moi ce clair, j'ai cette ENUM:ENUM sans tenir compte de ses arguments

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

Je veux vérifier si la valeur d'une variable est un identificateur, mais cela ne fonctionne pas:

if(tk == Token.Identifier) { 

Il ne me permet de comparer les valeurs si je passe des arguments:

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

Mais cela ne fonctionne que si l'i dentifier est 'test', mais je veux correspondre à tout identifiant.

Répondre

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

Lire la Type doc pour plus de méthodes sur ENUM.

+0

Merci! // 15 caractères –

4

alternative:

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

aide "à l'aide", vous devez également être en mesure de le faire:

if(tk.isIdentifier()) { 
1

Ou encore:

tk.match(Token.Identifier(_));