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.