Est-ce que Swift a échoué? Par exemple si je fais ce qui suit
var testVar = "hello"
var result = 0
switch(testVal)
{
case "one":
result = 1
case "two":
result = 1
default:
result = 3
}
est-il possible d'avoir le même code exécuté pour le cas "un" et le cas "deux"?
Oui. Vous pouvez le faire comme suit:
var testVal = "hello"
var result = 0
switch testVal {
case "one", "two":
result = 1
default:
result = 3
}
Vous pouvez également utiliser le mot clé fallthrough
:
var testVal = "hello"
var result = 0
switch testVal {
case "one":
fallthrough
case "two":
result = 1
default:
result = 3
}
var testVar = "hello"
switch(testVar) {
case "hello":
println("hello match number 1")
fallthrough
case "two":
println("two in not hello however the above fallthrough automatically always picks the case following whether there is a match or not! To me this is wrong")
default:
println("Default")
}
case "one", "two":
result = 1
Il n'y a pas de déclarations de rupture, mais les cas sont beaucoup plus flexibles.
Addendum: Comme le souligne Analog File, il existe en fait des instructions break
dans Swift. Ils sont toujours disponibles pour une utilisation dans les boucles, bien qu'ils soient inutiles dans les instructions switch
, sauf si vous devez remplir un cas vide sinon, car les cas vides ne sont pas autorisés. Par exemple: default: break
.
Voici un exemple facile à comprendre pour vous:
let value = 0
switch value
{
case 0:
print(0) // print 0
fallthrough
case 1:
print(1) // print 1
case 2:
print(2) // Doesn't print
default:
print("default")
}
Conclusion: Utilisez fallthrough
pour exécuter le cas suivant (un seul) lorsque le précédent qui a fallthrough
est identique ou non.
Le mot clé fallthrough
à la fin d'une requête provoque le comportement redondant que vous recherchez et plusieurs valeurs peuvent être vérifiées dans une seule requête.