2014-06-10 15 views
60

Swift wymaga wyczerpujących instrukcji switch, a każdy przypadek ma kod wykonywalny. Czy ktokolwiek zdecydował się na dobry sposób załatwienia spraw, w których nie chcesz nic robić? Mogę tam umieścić println(), ale to jest brudne.Noop do wyczerpujących komunikatów Switch Swift

+2

Nie można po prostu użyć przerwę ;? – Firo

Odpowiedz

99

Według the book, trzeba użyć break tam:

Zakres każdym przypadku nie może być pusta. W rezultacie musisz dołączyć co najmniej jedną instrukcję po dwukropku (:) każdej etykiety sprawy. Użyj pojedynczej instrukcji break, jeśli nie zamierzasz wykonywać żadnego kodu w treści dopasowanego przypadku.

+5

Och, znowu Swift łamie prawo minimalnego zaskoczenia :) – Sulthan

+0

@Sulthan po krótkim zastanowieniu, 'break' ma sens. Zapewnia to sposób na wczesne wyjście z sprawy, a także sposób na specyficzne wykonanie * niczego *, nawet jeśli twoje 'default:' nie ma nic wspólnego. – Jiaaro

+6

@Jiaaro Potrzeba 'break' wskazuje, że gałęzie bez' break ' może spaść. – RnMss

7

można po prostu użyć zerwaniu:

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 modyfikowane z docs