English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Swiftswitch语句

In questo articolo, imparerai a utilizzare il controllo di flusso delle istruzioni switch per gestire l'esecuzione del programma.

La frase switch è anche una delle molte frasi di controllo Swift, comeif-else,guarde altri, che eseguono azioni diverse in base a diverse condizioni.

Il vantaggio della frase switch è che può confrontare un valore con diversi modelli di corrispondenza possibili. Pertanto, può sostituire un diagramma a trapezio lungo if..else..if e corrispondere a modelli complessi.

La sintassi della frase switch

La sintassi della frase switch è:

switch variabile/espressione {
case value1:
	// Frase
case value2:
	// Frase
default:
	// Frase
}

Come funziona la frase switch in Swift?

  • L'espressione switch viene calcolata una sola volta.

  • Accetta un'espressione e la confronta in ordine (alto->basso) con ogni valore case.

  • Se esiste una corrispondenza, vengono eseguite le frasi all'interno del case e una volta completato il primo case che corrisponde, l'intera frase switch termina l'esecuzione.

  • Se non corrisponde nessun case, si passa alla frase case successiva.

  • Se non corrisponde nessun case, viene eseguito il codice specificato dalla parola chiave default.

AttenzioneOgni corpo case deve contenere almeno una frase eseguibile.

Esempio 1: Programma semplice che utilizza la frase switch

let dayOfWeek = 4
switch dayOfWeek {
	case 1:
		print("Domenica")
	    
	case 2:
		print("Lunedì")
	    
	case 3:
		print("Martedì")
	    
	case 4:
		print("Mercoledì")
	    
	case 5:
		print("Giovedì")
	    
	case 6:
		print("Friday")
	    
	case 7:
		print("Saturday")
	    
	default:
		print("Giorno non valido")
}

Quando esegui il programma sopra, l'output sarà:

Wednesday

Nel programma sopra, la frase switch attraverso il confronto del valore dayOfWeek con case 1per iniziare. Poiché il valore dayOfWeek non corrisponde al valore del primo caso, quindi scende al caso successivo fino a che uno di essi corrisponde.

Poichécase 4Corrisponde all'espressione switch, quindi viene eseguita la frase print("Mercoledì") all'interno del case e la frase switch case termina. Se non corrisponde nessun case, viene eseguitodefaultLe frasi interne.

Esempio 2: Esempio di frase switch con fallthrough

Se viene utilizzato il termine chiave fallthrough in una frase case, anche se il valore case non corrisponde all'espressione switch, il controllo continuerà al caso successivo.

let dayOfWeek = 4
switch dayOfWeek {
	case 1 :
		print("Domenica")
	    
	case 2:
		print("Lunedì")
	    
	case 3:
		print("Martedì")
	    
	case 4:
		print("Mercoledì")
		fallthrough
	    
	case 5:
		print("Giovedì")
	    
	case 6:
		print("Friday")
	    
	case 7:
		print("Saturday")
	    
	default:
		print("Giorno non valido")
}

Quando esegui il programma sopra, l'output sarà:

Wednesday
Thursday

Nel programma sopra, l'espressione case 4 esegue la frase print("Wednesday") e la parola chiave fallthrough continua a eseguire case 5. La frase print("Thursday") nel case 5 viene eseguita, anche se il caso non corrisponde all'espressione switch. Pertanto, puoi ancora vedere l'output Thursday nel terminale.

Esempio 3: Esempio di espressione switch con un modello più complesso

let programmingLanguage = (name: "Go", version: 10)
switch programmingLanguage {
	case (let name, let version) where (version < 0 && name.count < 0):
		print("Input non valido")
	case ("Swift", let version) where version == 4:
		print("Trovata la versione più recente di Swift")
	case ("Swift", ..< 4):
		print("Trovata versione vecchia di Swift")
	case ("Swift", 4...):
		print("La versione di Swift è maggiore di 4 e non è stata ancora rilasciata")
	case ("Taylor Swift", 30):
		print("Mio Dio. Questo è Taylor Swift")
	case (let name, let version):  
		print("""
			Linguaggio di programmazione:\(name)
			Versione: \(version)
			Stato: Non trovato
		""")
}

Quando esegui il programma sopra, l'output sarà:

Linguaggio di programmazione: Go
Versione: 10
Stato: Non trovato

Nel programma sopra, matchiamo l'espressione di tipo tuple programmingLanguage con le seguenti situazioni diverse:

  • case (let name, let version) where (version < 0 && name.count < 0)
    Questo esempio mostra come assegnare il valore dell'espressione switch a una costante o variabile temporanea, in modo da utilizzare la parola chiave let per usare sia maiuscole che minuscole. Questo viene chiamato binding di valore.
    您还可以使用where子句将这些条件应用于这些值。对于多个条件,您可以使用&&运算符将它们连接起来,如上例所示。
    如果case不满足where子句中定义的条件,则这些case块中的语句将不会执行,并且无法通过比较下一个switch case。

  • case ("Swift", ..<4 )
    在这种情况下,将元组的第一个元素与字符串字面量"Swift"匹配,并且还会检查第二个元素是否在单边范围内..<4。

  • case ("Swift", 4...)
    在这种情况下,将元组的第一个元素与字符串字面量"Swift"匹配,并且还会检查第二个元素是否在单边范围内4...。

  • case (let name, let version)
    在这种情况下,将元组的每个值绑定到临时常量或变量。