schneller Fall fällt durch


146

Ist Swift durch Aussage gefallen? zB wenn ich folgendes mache

var testVar = "hello"
var result = 0

switch(testVal)
{
case "one":
    result = 1
case "two":
    result = 1
default:
    result = 3
}

Ist es möglich, denselben Code für den Fall "eins" und den Fall "zwei" ausführen zu lassen?

Antworten:


367

Ja. Sie können dies wie folgt tun:

var testVal = "hello"
var result = 0

switch testVal {
case "one", "two":
    result = 1
default:
    result = 3
}

Alternativ können Sie das fallthroughSchlüsselwort verwenden:

var testVal = "hello"
var result = 0

switch testVal {
case "one":
    fallthrough
case "two":
    result = 1
default:
    result = 3
}

29
+1 für nicht nur erwähnen fallthrough, sondern vorschlagen, Multi-Case zu verwenden
Thilo

3
Dies ist ein so guter Kompromiss zwischen der Gefahr des Durchfalls von C und dem Mangel an Durchfall in beispielsweise C #
Alexander - Reinstate Monica

Weiß jemand, wie man von einem Fall zum Standard durchfällt? Fall "zwei", Standard: wird nicht kompiliert.
Zack Morris

2
Keine Ursache. Ich habe festgestellt, dass das Auskommentieren des Falls Teil der festgelegten Standardfälle ist. / * Fall "zwei", * / Standard: hat den gewünschten Effekt.
Zack Morris

1
@ AlexanderMomchliov C # hat explizit durchgefallen
Ian Newson

8
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")
}

Kennen Sie einen Weg, um zum Standardfall durchzukommen?
MarcJames

5
Ich stimme "Fall zwei" zu. Für mich ist dieses Verhalten scheiße. Warum führt Swift den nächsten Fall aus, obwohl er nicht wahr ist? Dies macht die switch-Anweisung völlig nutzlos ...
Andreas Utzinger

7
case "one", "two":
    result = 1

Es gibt keine break-Anweisungen, aber Fälle sind viel flexibler.

Nachtrag: Wie Analog File hervorhebt, gibt es breakin Swift tatsächlich Aussagen. Sie können weiterhin in Schleifen verwendet werden, sind jedoch in switchAnweisungen nicht erforderlich, es sei denn, Sie müssen einen ansonsten leeren Fall ausfüllen, da leere Fälle nicht zulässig sind. Zum Beispiel : default: break.


6

Hier ist ein Beispiel für Sie leicht zu verstehen:

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

Schlussfolgerung: Verwenden Sie fallthroughdiese Option, um den nächsten Fall (nur einen) auszuführen, wenn der vorherige fallthroughübereinstimmt oder nicht.


2

Das Schlüsselwort fallthrougham Ende eines Falls verursacht das gewünschte Durchfallverhalten, und mehrere Werte können in einem Fall überprüft werden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.