フィールド値に基づいて列挙型の値を返したいとします。例えばフィールド値に基づいて列挙値を表示
:
Free value field
は、値「15」を持っている場合は列挙型の値が1のラベルがあるので、私は、列挙型の値が「1」を返すようにしたい:'10 -20' 、15であるため、 10〜20の範囲はその値を返したい。
私はこのための表示方法を作成したいと思います。
switch case
シナリオでこれを達成できると思います。
これを設定するにはどうすればよいですか?
フィールド値に基づいて列挙型の値を返したいとします。例えばフィールド値に基づいて列挙値を表示
:
Free value field
は、値「15」を持っている場合は列挙型の値が1のラベルがあるので、私は、列挙型の値が「1」を返すようにしたい:'10 -20' 、15であるため、 10〜20の範囲はその値を返したい。
私はこのための表示方法を作成したいと思います。
switch case
シナリオでこれを達成できると思います。
これを設定するにはどうすればよいですか?
はあなたが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;
}
ような何かを
はい、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
}
私は個人的には整数分裂で賢くなるという考えが好きです。
範囲が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));
}
:
ので、以下のコードとスクリーンショットを参照してください