2014-06-10 11 views
60

Swift richiede dichiarazioni di switch esaustive e che ogni caso ha un codice eseguibile. Qualcuno si è sistemato in un buon modo per gestire i casi in cui non si vuole realmente fare qualcosa? Posso inserire un println() lì, ma è sporco.Noop per le dichiarazioni di switch di rettifica di Swift

+2

Non potresti semplicemente usare una pausa ;? – Firo

risposta

99

Secondo the book, è necessario utilizzare break lì:

La portata di ogni singolo caso non può essere vuoto. Di conseguenza, è necessario includere almeno un'istruzione che segue i due punti (:) di ciascuna etichetta del caso. Utilizzare una singola istruzione break se non si intende eseguire alcun codice nel corpo di un caso corrispondente.

+5

Oh, ancora una volta Swift infrange la legge della sorpresa minima :) – Sulthan

+0

@Sulthan dopo una piccola considerazione, 'break 'ha senso. Fornisce un modo per uscire anticipatamente da un caso e anche un modo per fare proprio * nothing *, anche quando il tuo 'default:' ha un comportamento non-niente – Jiaaro

+6

@Jiaaro La necessità di 'break' indica che i rami senza' break' potrebbe cadere. – RnMss

7

Si può semplicemente utilizzare una pausa:

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." 
} 

esempio modificato dal docs

Problemi correlati