Swift wymaga wyczerpujących instrukcji przełączania, a każdy przypadek ma kod wykonywalny.
Etykieta „case” w „przełączniku” powinna zawierać co najmniej jedną instrukcję wykonywalną
Czy ktoś zdecydował się na dobry sposób na załatwienie spraw, w których nie chcesz nic robić? Mogę tam umieścić println (), ale wydaje się to brudne.
Odpowiedzi:
Zgodnie z książką musisz
break
tam użyć :źródło
break
wskazuje, że gałęzie bezbreak
mogą się przewrócić.()
wokrs też. Niemniej jednak wolę,break
bo to wyjaśnia sprawę. Użyj słowa kluczowego,fallthroug
aby przejść przez instrukcje.default:
. To nie wydaje się dobre. Zgadzam się również, że sugeruje to upadek c przez zachowanie, co nie jest tym, co robi Swift (chociaż miło wiedzieć, że może spaść).Możesz użyć
break
oświadczenia:let vegetable = "red pepper" var vegetableComment: String = "Nothing" switch vegetable { case "cucumber", "watercress": break // does nothing case let x where x.hasSuffix("pepper"): vegetableComment = "Is it a spicy \(x)?" default: vegetableComment = "Everything tastes good in soup." }
Przykład zmodyfikowany na podstawie dokumentacji
źródło
Poniżej znajduje się jedna opcja dla instrukcji zerowej, ale może nie jest to dobre rozwiązanie. Nie mogę znaleźć instrukcji takiej jak Python Pass
w przypadku przełącznika, przerwa jest lepszym wyborem.
break
źródło
Najczystszym rozwiązaniem, jakie znalazłem, jest po prostu włączenie ostatniego oświadczenia w przypadku przełącznika jako domyślnego. Pozwala to uniknąć konieczności dodawania
break
lub innych niepotrzebnych stwierdzeń, a jednocześnie obejmuje wszystkie możliwe przypadki.Na przykład:
switch myVar { case 0: myOtherVar = "Red" case 1: myOtherVar = "Blue" default: myOtherVar = "Green" }
źródło
Oprócz
break
wspomnianych w innych odpowiedziach, widziałem również()
używane jako oświadczenie o braku działania:switch 0 == 1 { case true: break case false: () }
Użyj,
()
jeśli uznasz to zabreak
mylące lub chcesz zaoszczędzić 3 znaki.źródło