2016-08-04 16 views
-1

Nachfolgend ist der Code zum Ausführen der Switch-Anweisung in Spielplatz. Ich habe einige Switch-Anweisungen ausgeführt, ohne Standard zu verwenden. Mein Zweifel ist, warum es für einige obligatorisch ist und für andere Aussagen obligatorisch ist. Danke im Voraus !.Swift 3.0-Switch-Anweisung ohne Standardanweisung Fehler erhalten "Switch muss erschöpfend sein, in Betracht ziehen, Standardklausel hinzuzufügen"

let someNumber = 3.5 

switch someNumber { 

case 2 , 3 , 5 , 7 , 11 , 13 : 
    print("Prime numbers") 
case 4 , 6 , 24 , 12 , 66 : 
    print("Normal numbers") 

} 

Zähler Anweisung erfolgreich ausgeführt, ohne Standard mit

let yetAnotherPoint = (3,1) 

    switch yetAnotherPoint { 

    case let (x,y) where x == y : 
    print("(\(x),\(y)) is on the line x == y") 
    case let (x,y) where x == -y : 
    print("(\(x),\(y)) is on the line x == -y") 
    case let (x,y): 
    print("(\(x),\(y)) is just some arbitrary point") 

    } 
+0

Sie sind erforderlich, um alle möglichen Fälle in Swift abzudecken. Also möchte ich, dass du etwas wie folgt hinzufügst: 'default: print (" Eine andere Nummer ")' – vacawama

+0

Ich habe einige Switch-Anweisungen ohne Standard ausgeführt. Mein Zweifel ist, warum in dieser bestimmten Anweisung Fehlermeldung ausgelöst wird, die standardmäßig als obligatorisch. – Ram

+0

Die Fehlermeldung ist klar. Jeder Wert, der einen Switch durchläuft, muss entweder durch eine Case- oder eine Default-Klausel behandelt werden. Wenn Sie ein Gegenbeispiel haben, zeigen Sie es bitte an. – vacawama

Antwort

6

Wie andere in den Kommentaren erwähnt, sollen Sie default verwenden, weil in Ihrem Fall Sie nicht jedes mögliche Doppel auszusetzen. Aber wenn Sie mehr die Art, wie Sie in Ihrem zweiten Beispiel hat es Sie es wie so tun konnte:

let someNumber = 3.5 
switch someNumber { 
case 2 , 3 , 5 , 7 , 11 , 13 : 
    print("Prime numbers") 
case 4 , 6 , 24 , 12 , 66 : 
    print("Normal numbers") 
case let x: 
    print("I also have this x = \(x)") 
} 

Nur für den Hinweis, hier ist, wie dieses Szenario wird am häufigsten behandelt:

let someNumber = 3.5 
switch someNumber { 
case 2 , 3 , 5 , 7 , 11 , 13 : 
    print("Prime numbers") 
case 4 , 6 , 24 , 12 , 66 : 
    print("Normal numbers") 
default: 
    print("I have an unexpected case.") 
}