2013-08-27 6 views
9

Mi chiedevo se esiste un modo per i casi di commutazione combinate ad esempio:ios c'è un modo per combinare casi di switch?

switch (value) 
    { 
    case 0,1,2: 
     nslog (@"0,1,2 cases"); 
     break 
     case 3: 
     nslog (@"3 cases"); 
     break; 
     default: 
     NSLog (@"anything else"); 
     break; 
    } 

te lo apprezzo molto il vostro aiuto

risposta

27

Vuoi dire qualcosa di simile?

switch (value) 
{ 
case 0: 
case 1: 
case 2: 
    NSLog (@"0,1,2 cases"); 
    break; 
case 3: 
    NSLog (@"3 cases"); 
    break; 
default: 
    NSLog (@"anything else"); 
    break; 
} 

noto, la struttura case interruttore eseguirà ogni riga all'interno delle parentesi partire dalla linea caso corrispondente, fino a raggiungere l'ultimo o una pausa. Quindi, se non includi un'interruzione dopo un caso, continuerà anche a eseguire il caso successivo.

+1

Che dire del brutto modo di combinare: switch (valore/3) {caso 0: nslog (@ "0,1,2 casi"); rompere; caso 1: nslog (@ "3 casi"); rompere; default: NSLog (@ "qualsiasi altra cosa"); rompere; } – dcaswell

1

In alternativa, si può fare questo ...

case 0: 
case 1: 
case 2: 
    NSLog(); 
    break; 

case 3: 
    NSLog() 
    break; 

default: 
    NSLog(); 
    break; 
+0

c'è un modo per combinare 0 e 1 o 1 e 3? – Renata

+0

@Renata si, è possibile controllare la mia risposta ... – Rajneesh071

+0

Se non si "spezza" all'interno di un caso, le istruzioni ricadono nei seguenti (successivi) casi fino a quando non trova "interruzione". Quindi, è possibile avere prima la logica generica e poi avere una logica specifica nel caso successivo ... E.g. caso 0: caso 2: NSLog (@ "0, 1 e 2 casi"); caso 1: NSLog (@ "specifico per il caso 1"); rompere; caso 3: NSLog (@ "caso 3"); rompere; – Ashok

0

E 'anche possibile utilizzare gli intervalli (un po' meno codice). L'esempio che segue lo illustra:

switch (value) 
    { 
     case 0 ... 2: 
     NSLog (@"0,1,2 cases"); 
     break 
     case 3: 
     NSLog (@"3 cases"); 
     break; 
     default: 
     NSLog (@"anything else"); 
     break; 
    }