2016-09-27 2 views
2

필드 값을 기준으로 열거 형 값을 반환하고 싶습니다. 값 '15'이필드 값을 기준으로 열거 형 값 표시

Free value field 경우 열거 값 1의 레이블이기 때문에, 내가, 열거 값 "1"을 반환 할 : '10 -20 '(15)에 있기 때문에 예를 들어

10-20의 범위는 그 값을 반환하고 싶습니다.

이에 대한 표시 방법을 만들고 싶습니다.

나는 이것을 switch case 시나리오로 수행 할 수 있다고 생각합니다.
어떻게 설정하면됩니까?

답변

3

당신이 switch/case와 함께 할 수 있지만 당신은 그 값의 범위와 결과 값 (당신의 열거 요소)의 제한된 간단한 if 처리하는 경우/else if 아마이

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, 2, 3, 4 즐 즐)를 진술 할 것입니다

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

:

그래서 아래의 코드 및 스크린 샷 참조