2011-04-30 7 views
8

case를 전체 숫자 범위에 적용하려면 switch 문을 as3으로 어떻게 작성합니까?switch 문과 숫자 범위

if (mcPaddle.visible == true) 
{ 
    switch (score) 
    { 
     case 10://10 to 100 
      myColor.color = 0x111111; 
      break; 
     case 110://110 to 1000 
      //etc etc 
      break; 
    } 
} 

나는 사건을 10 ~ 100, 및 110-1000 사이의 모든 번호를 신청할 수있는 다양한 방법을 시도했지만, 그것을 할 수있는 방법을 찾을 수가 없어, 난 찾을 수 없습니다 as3에서의 그런 문법에 대한 적절한 문법.

답변

15

당신이 사용할 수있는 스위치 블록을 사용하여 : HTML/jQuery를이를 사용하는 방법을 찾는 분들을 위해

var score:Number = 123; 

switch(true){ 

    case score > 120 && score < 125 : 
     trace('score > 120 && score < 125'); 
     break; 

    case score > 100 && score < 140 : 
     trace('score > 100 && score < 140'); 
     break; 

    case score == 123 : 
     trace('score == 123'); 
     break; 

} 
//score > 120 && score < 125 
+0

고마워요,이 작품과 내가 정확히 필요한 것입니다. switch 문을 변경하여 모든 것에 대해 사실을 확인한 다음 스코어의 진리 값을 확인하려고 생각하지 마십시오. –

+0

이 코드는 더러워 보입니다. if/elses와 함께 지내고 있습니다. – alxx

+3

@alxx - 더러워 보일지 모르지만 놀랍게도이 스위치 범위 코드는 실제로 if-else 체인보다 성능이 우수합니다. 나는 10 개의 무작위 수를 10 개의 동일한 크기의 범위로 테스트했으며, 스위치는 지속적으로 15 % 향상된 성능을 달성했습니다! – merv

0

액션의 스위치 문이 범위에서 작동하지 않습니다,하지만 당신은/만약 다른 체인 함께 할 쉽게 할 수 있습니다 if (a = b) or (a = c) or (a = d) ... 형 구조의

if (score >= 10 && score <= 100) 
{ 
    //10 - 100 
} 
else if (score <= 110) 
{ 
    //101 - 110 
} 
else if (score <= 1000) 
{ 
    //111 - 1000 
} 
+0

글쎄, 그 시나리오를 피하기를 바랐다. 둥지가보기 흉하고 지저분한 경우가 많았지 만 switch 문이 범위를 수행 할 수 없기 때문에 나는 선택의 여지가 없다고 생각하기 때문이다. –

+0

그들은 실제로 중첩 될 필요는 없습니다. 체인을 연결할 수 있습니다. 각 레벨 이후에 4 개의 공백을 넣지 않으면/else 블록이 매우 읽기 쉽도록 유지됩니다. – alxx

+0

내 대답을 참조하십시오. – OXMO456

0

스위치 문 바로 수정안을. 범위를위한 것이 아닙니다. 전환 추적을 사용하여 다소 시뮬레이트 할 수 있습니다.

switch (score) { 
    case 10: 
    case 11: 
    case 12: 
    case 13: 
    case etc... 
     blah blah blah 
     break; 
} 

하지만 그 방법은 매우 어리석은 방법입니다. 훨씬 쉽게/terser 정기적 if()

0

을,이를 만들 OXMO456의 대답 @ 사용했습니다 간단한 펜 : http://codepen.io/anon/pen/jHFoB

var을 정상적으로 설정하고 trace으로 시작하는 줄을 제거하기 만하면됩니다.

ps. 나는 그의 의견에 대해 충분한 담당자가 없기 때문에 이것을 답으로 추가하고있다. 누구나 할 수 있으면 이동/복사하십시오. 감사!