web-dev-qa-db-fra.com

swift échec

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"?

144

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
}
349
Cezary Wojcik
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")
}
8
Glenn Tisman
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.

7
nhgrif

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.

6
Khuong

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.

2
Russell Borogove