2015-01-02 1 views
16

Ich habe die Enum folgendeTyposkript Enum Schalter nicht funktioniert

enum EditMode { 
    View = 0, 
    Edit = 1, 
    Delete = 2 
} 

Nehmen wir an, ich habe eine Variable vom Typ ENUM

var editMode = EditMode.Edit; 

Warum wird der folgende Code nicht (geht direkt auf die Standard) ?

switch (editMode) { 
    case EditMode.Delete: 
     ... 
     break; 
    case EditMode.Edit: 
     ... 
     break; 
    default: 
     ... 
     break; 
    } 
+1

Dieser Code funktioniert im Typoskript Spielplatz. Sind Sie sicher, dass Ihre Skripts in der richtigen Reihenfolge geladen werden? –

+0

Ich kann auch bestätigen, dass es auf dem Spielplatz funktioniert. –

+2

Ja, es scheint, das Problem ist nicht der Code selbst. Aus irgendeinem Grund weist mein Code nicht eine Nummer hinter der Enumeration, sondern die Zeichenfolge, die der Nummer zugeordnet ist, zB statt 1 (Edit) "1". warum kann ich nicht verstehen. – Mantzas

Antwort

9

Ich habe gefunden, warum ich passiert. Irgendwo im Code gibt es eine Aktivierungsfunktion (ich verwende durandal), die diese Enumeration als String übergibt (die Funktion hat den Parameter als Enum markiert, ist aber immer noch ein String). Deshalb schlägt meine switch-Anweisung fehl. Ich habe den Wert einfach in eine Zahl umgewandelt und jetzt funktioniert alles wie erwartet. danke trotzdem

+1

Das war das Problem für mich auch. Mein Konstruktor hatte einen Parameter vom Typ Enum, aber ein externer Aufrufer übergab eine Zeichenfolge. Ich habe den Konstruktorparameter auf den Typ string geändert und EnumType [Parameter] verwendet, um ihn in die Enumeration zu konvertieren. – mfanto

22

Ich hatte auch dieses Problem. Einfache Möglichkeit, um es zu bekommen: fügen Sie ein + Zeichen vor Ihrer Variable in dem Schalter, das heißt

switch (+editMode) { 
    case EditMode.Delete: 
     ... 
     break; 
    case EditMode.Edit: 
     ... 
     break; 
    default: 
     ... 
     break; 
    } 
+1

Dies scheint die einzige Möglichkeit zu sein, den Schreibmaschinenfehler zu beheben. – Kokodoko

+1

Also das + wird es in eine Zahl ändern, und das scheint zu funktionieren. Ich denke, das scheint keine großartige Lösung zu sein. Ich habe auch versucht, den ersten Gegenstand zu 0 in meinem enum zu vergeben und es hat nicht geholfen. Scheint wie ein Fehler. – nycynik