2010-08-21 2 views
0

J'ai une classe Enumeration, et j'ai extrait les valeurs "id" de certains membres et les ai stockés dans des variables Int. Que ce soit une bonne idée ou non n'est pas la question.Identifiants d'énumération, interdits dans l'opération de correspondance?

Ce que la question est, est la raison pour laquelle je ne peux pas l'air de faire ce qui suit:

Disons que je s: Int qui détient une de ces valeurs id ... et je voudrais faire correspondre contre le réel valeurs d'énumération. Quelque chose comme ce qui suit:

de match { QID.MEM_RD.id => // quelque chose

QID.MEM_WRT.id => // quelque chose d'autre }

Cela semble me donner un échec que "l'identifiant stable est requis". Donc, je finis par écrire du code comme

if (== la QID.MEM_RD.id) // quelque chose else if (s == QID.MEM_WRT.ID) // autre chose

donc. C'est vraiment étrange pour moi que Scala ait cette fonctionnalité intéressante, mais semble me forcer à revenir à un style de codage plus laid --- quand je préfère utiliser leur fonction de match.

Des idées? Je suppose que je peux me restructurer pour arrêter d'extraire des identifiants ... mais c'est juste l'idée que le match ne permet pas cela qui m'irrite un peu.

(Note:. Je ne cherche pas à stocker les valeurs id ne importe où constamment ... il suffit de les utiliser pour la durée de l'exécution du programme)

-Jay

Répondre