Cas de Switch Swift: l'avertissement par défaut ne sera jamais exécuté
Sur Xcode 7b2 avec Swift 2 code, j'ai suivantes:
dans le cas d'un switch, le compilateur renvoie l'avertissement suivant:
Default will never be executed
le code:
switch(type) {
case .foo:
return "foo"
case .bar:
return "bar"
case .baz:
return "baz"
default:
return "?"
}
Pourquoi y aurait-il un avertissement ?
3 réponses
je viens de comprendre pourquoi :
L'objet que j' "sous tension" est un enum
et mon enum
a seulement 3 entrées : .foo
, .bar
,baz
.
le compilateur obtient qu'il n'y a pas besoin d'un défaut car chaque possibilité de enum
se fait tester.
cela pourrait être parce que type
est un enum avec 3 cas et le compilateur sait que la déclaration switch est exhaustive donc vous n'avez pas besoin d'un default
déclaration afin de traiter tous les cas possibles.
je pense que cet avertissement viole l' ouvert-fermé le principe. Lorsque vous ajoutez une valeur enum plus tard, la valeur par défaut sera manquante, et vous ne pouvez pas prédire ce que votre code fera. Donc vous devez changer aussi cet endroit. De toute façon, utiliser switch() viole ce principe.