2016-09-27 9 views
2

フィールド値に基づいて列挙型の値を返したいとします。例えばフィールド値に基づいて列挙値を表示

Free value fieldは、値「15」を持っている場合は列挙型の値が1のラベルがあるので、私は、列挙型の値が「1」を返すようにしたい:'10 -20' 、15であるため、 10〜20の範囲はその値を返したい。

私はこのための表示方法を作成したいと思います。

switch caseシナリオでこれを達成できると思います。
これを設定するにはどうすればよいですか?

答えて

3

はあなたがswitch/caseでそれを行うことができますが、その後、値の範囲と結果値(自分の列挙要素)の限定セットシンプルifを扱う場合/ else ifおそらくより適し

あるので、代わりにあなたのケースの枝には、各可能な値(1、2、3、4のbla BLA)を述べ、この

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

はい、switchという声明であなたはそれを行うことができます。

これを試してみてください。もちろん

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

私は個人的には整数分裂で賢くなるという考えが好きです。

範囲が10のグループになる場合は、10で割って列挙型の値にすることができます。

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

ので、以下のコードとスクリーンショットを参照してください

関連する問題