2013-08-27 11 views
9

Zastanawiałem się, czy istnieje sposób, aby w połączeniu przypadkach przełącznika na przykład:ios jest sposób na kombinację obudów przełączników?

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

będę naprawdę wdzięczny za pomoc

Odpowiedz

27

Masz na myśli coś takiego?

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; 
} 

Wiesz, struktura przypadek przełącznik wykona każdą linię wewnątrz szelki począwszy od odpowiedniej linii orzecznictwa, aż osiągnie ostatnią jedną lub przerwę. Tak więc, jeśli nie załączysz przerwy po sprawie, będzie ona również wykonywać następny przypadek.

+1

Jak o brzydkim sposób łączenia: przełącznik (wartość/3) {case 0: NSLog (@ "0,1,2 przypadkach"); przerwa; przypadek 1: nslog (@ "3 przypadki"); przerwa; default: NSLog (@ "cokolwiek innego"); przerwa; } – dcaswell

1

Alternatywnie, można to zrobić ...

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

case 3: 
    NSLog() 
    break; 

default: 
    NSLog(); 
    break; 
+0

jest sposób na połączenie 0 i 1 lub 1 i 3? – Renata

+0

@Renata tak, możesz sprawdzić moją odpowiedź ... – Rajneesh071

+0

Jeśli nie "włamujesz się" do obudowy, instrukcje przechodzą przez następujące (następne) przypadki, aż znajdą "przerwę". Możesz więc najpierw utworzyć swoją ogólną logikę, a potem mieć specyficzną logikę w późniejszym przypadku ... E.g. case 0: case 2: NSLog (@ "0, 1 i 2 przypadki"); przypadek 1: NSLog (@ "specyficzne dla przypadku 1"); przerwa; przypadek 3: NSLog (@ "case 3"); przerwa; – Ashok

0

Możliwe jest również użycie zakresy (trochę mniej kod). Poniższy przykład ilustruje to:

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