2016-09-27 2 views
2

Ich möchte einen Enum-Wert basierend auf einem Feldwert zurückgeben.Anzeige Enum-Wert basierend auf Feld Wert

Zum Beispiel:

Wenn Free value field den Wert '15', ich mag den ENUM-Wert "1" zurück, weil das Etikett von ENUM-Wert 1: '10 -20' , weil 15 ist in der Bereich von 10-20 möchte ich diesen Wert zurückgeben.

Ich möchte eine Anzeige-Methode für diese erstellen.

Ich glaube, ich dies mit einem switch case Szenario erreichen kann.
Wie kann ich das am besten einrichten?

Antwort

3

Natürlich kann man es mit einem switch/case tun können, aber wenn Sie befassen sich mit einer Reihe von Werten und einer begrenzten Anzahl von Ergebniswerten (Ihre Aufzählungselemente), dann eine einfache if/else if ist wahrscheinlich besser geeignet

anstatt also jeden möglichen Wert der Angabe (1, 2, 3, 4 bla bla) in Ihrem Fall Zweig tut so etwas wie dies

int x; 
; 

x = yourTable.YourField; 
if (x >= 1 && x <= 15) 
{ 
    return YourEnum::1to15; 
} 
else if (x >= 16 && x <= 20) 
{ 
    return YourEnum::16to20; 
} 
// other possible ranges 
else 
{ 
    throw YourEnum::Unknown; 
} 
1

ja, mit einer switch Anweisung können Sie es tun.

Try this:

int value; 

; 

switch (value) 
{  
    case 1, 2, 3, 4 ,5: 
     //Your code 
     break; 

    case 10, 11, 12, 13, 14, 15, 16, 17, 18 ,19, 20 : 
     //Your code 
     break;      

    default :    
     //Your code 
} 
1

Ich persönlich mag die Idee, clever mit Integer Division zu werden.

Wenn Ihre Bereiche werden Gruppen von 10 sein, dann können Sie durch 10 dividieren nur auf den ENUM-Wert zu erhalten.

sehen also diesen Code und Screenshot unten:

static void Job1(Args _args) 
{ 
    int   i; 
    MyEnum  value; 

    // Test #1 
    i  = 15;   // Your number 
    value = (i/10);  // Enum result 
    info(strFmt("Test #1: %1", value)); 

    // Test #2 
    i  = 5;   // Your number 
    value = (i/10);  // Enum result 
    info(strFmt("Test #2: %1", value)); 

    // Test #3 
    i  = 22;   // Your number 
    value = (i/10);  // Enum result 
    info(strFmt("Test #3: %1", value)); 
} 

enter image description here

Verwandte Themen