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

语句switchSwift

En este artículo, aprenderá a usar la declaración de control switch para controlar el flujo de ejecución del programa.

La declaración switch también es una de las muchas declaraciones de control de Swift, comoif-elseguardy otros, que ejecutan diferentes acciones según diferentes condiciones.

La ventaja de la declaración switch es que puede comparar un valor con varios patrones de coincidencia posibles. Por lo tanto, puede reemplazar diagramas de flujo largos if..else..if y coincidir con patrones complejos.

La sintaxis de la declaración switch

La sintaxis de la declaración switch es:

switch variable/Expresión {
case valor1:
	// Declaración
case valor2:
	// Declaración
default:
	// Declaración
}

¿Cómo funciona la declaración switch en Swift?

  • La expresión switch se calcula solo una vez.

  • Acepta una expresión y la evalúa en orden (desde->Comparar con cada valor de caso.

  • Si hay coincidencia, se ejecutarán las instrucciones dentro del caso, y una vez completado el primer caso coincidente, toda la declaración switch finalizará su ejecución.

  • Si no hay coincidencia de caso, se caerá al siguiente caso.

  • Si no hay coincidencia de caso, la palabra clave default especifica el código que se debe ejecutar.

Nota:El cuerpo de cada caso debe contener al menos una instrucción ejecutable.

1:简单程序使用 Switch 语句

let dayOfWeek = 4
switch dayOfWeek {
	case 1:
		print("Sunday")
	    
	case 2:
		print("Monday")
	    
	case 3:
		print("Tuesday")
	    
	case 4:
		print("Wednesday")
	    
	case 5:
		print("Thursday"
	    
	case 6:
		print("Viernes"
	    
	case 7:
		print("Sábado"
	    
	default:
		print("Día inválido"
}

Cuando ejecute el programa anterior, la salida será:

Wednesday

En el programa anterior, la declaración switch compara el valor de dayOfWeek con case 1Coincidir para comenzar. Debido a que el valor de dayOfWeek no coincide con el valor del primer caso, por lo que se desciende al siguiente caso hasta que uno de ellos coincida.

Debido acase 4Coincide con la expresión switch, por lo tanto, la declaración print("Wednesday") dentro del caso se ejecutará y el caso switch finalizará. Si no hay coincidencia de caso, se ejecutarádefaultLas instrucciones internas.

2:带有 fallthrough 的 Switch 语句

Si se utiliza la palabra clave fallthrough en una declaración case, el control continuará al siguiente caso, incluso si el valor del caso no coincide con la expresión switch.

let dayOfWeek = 4
switch dayOfWeek {
	case 1 :
		print("Sunday")
	    
	case 2:
		print("Monday")
	    
	case 3:
		print("Tuesday")
	    
	case 4:
		print("Wednesday")
		fallthrough
	    
	case 5:
		print("Thursday"
	    
	case 6:
		print("Viernes"
	    
	case 7:
		print("Sábado"
	    
	default:
		print("Día inválido"
}

Cuando ejecute el programa anterior, la salida será:

Wednesday
Thursday

En el programa anterior, case 4 Ejecutar la sentencia print("Wednesday") y la palabra clave fallthrough continuará ejecutando case 5.case 5La sentencia print("Thursday") se ejecuta, incluso si cas no coincide con la expresión switch. Por lo tanto, también puede ver la salida Thursday en la consola.

3

:switch statements con patrones más complejos 10)
Ejemplo
	let programmingLanguage = (name: "Go", version:
		switch programmingLanguage {
	case (let name, let version) where (version < 0 && name.count < 0): 4:
		print("La entrada no es válida"
	case ("Swift", let version) where version ==4 ) :
		print("Encontré una versión antigua de Swift"
	case ("Swift",4...):
		print("La versión de Swift es mayor que4no se ha lanzado)
	case ("Taylor Swift",30) :
		print("¡Mi Dios! Esto es Taylor Swift")
	case (let name, let version):  
		print("""
			Lenguaje de programación: \(name)
			Versión: \(version)
			Estado: No encontrado
		"""
}

Cuando ejecute el programa anterior, la salida será:

Lenguaje de programación: Go
Versión: 10
Estado: No encontrado

En el programa anterior, vamos a coincidir la expresión de tipo tupla programmingLanguage con las siguientes situaciones diferentes:

  • case (let name, let version) where (version < 0 && name.count < 0)
    Este ejemplo binda el valor de la expresión switch a una constante o variable temporal, para usar la palabra clave let en mayúsculas y minúsculas. Esto se llama enlace de valor.
    También puede usar la cláusula where para aplicar condiciones a estos valores. Para múltiples condiciones, puede usar el operador && para conectarlas, como se muestra en el ejemplo anterior.
    Si el caso no cumple con las condiciones definidas en la cláusula where, las instrucciones de estos bloques de caso no se ejecutarán y no se podrá comparar con el siguiente caso switch.

  • case ("Swift", ..<4 )
    En este caso, se compara el primer elemento del tupla con la literal de cadena "Swift", y también se verifica si el segundo elemento está en un rango unilateral..<4。

  • case ("Swift",4...)
    En este caso, se compara el primer elemento del tupla con la literal de cadena "Swift", y también se verifica si el segundo elemento está en un rango unilateral4…。

  • case (let nombre, let versión)
    En este caso, cada valor del tupla se une a un constante o variable temporal.