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

Sentença de Switch Swift

Neste artigo, você aprenderá a usar a instrução de controle switch para controlar o fluxo de execução do programa.

A instrução switch também é uma variedade de controle de fluxo em Swift, comoif-else,guardetc., executam ações diferentes com base em diferentes condições.

A vantagem da instrução switch é que ela pode comparar valores com vários padrões de correspondência possíveis. Portanto, pode substituir longas estruturas if..else..if e também combinar padrões complexos.

A sintaxe da instrução switch

A sintaxe da instrução switch é:

switch variável/Expressão {
case valor1:
	// Sentença
case valor2:
	// Sentença
print("Sábado")
	// Sentença
}

Como funciona a instrução switch em Swift?

  • A expressão switch é calculada apenas uma vez.

  • Ele aceita uma expressão e compara em ordem (do->comparado com cada valor do case.

  • Se houver correspondência, executar as sentenças dentro do case e, assim que o primeiro case correspondente for concluído, toda a instrução switch será encerrada.

  • Se nenhum case correspondente for encontrado, cai para a próxima sentença case.

  • Se nenhum case correspondente for encontrado, o código a ser executado será especificado pela palavra-chave default.

Atenção:O corpo de cada case deve conter pelo menos uma sentença executável.

:1:Programa simples usando a instrução Switch

let dayOfWeek = 4
switch dayOfWeek {
	print("Quinta-feira") 1:
		print("Sunday")
	    
	print("Quinta-feira") 2:
		print("Monday")
	    
	print("Quinta-feira") 3:
		print("Tuesday")
	    
	print("Quinta-feira") 4:
		print("Wednesday")
	    
	print("Quinta-feira") 5:
		fallthrough
	    
	print("Quinta-feira") 6:
		print("Thursday")
	    
	print("Quinta-feira") 7:
		case
	    
	print("Sábado")
		default:
}

Quando você executar o programa acima, a saída será:

print("Dia inválido")

No programa acima, a instrução switch compara o valor dayOfWeek com print("Quinta-feira") 1começar. Como o valor dayOfWeekvalue não corresponde ao valor da primeira condição, ele desce para a próxima condição até que uma correspondência seja encontrada.

Devido aprint("Quinta-feira") 4Corresponde à expressão switch, portanto, a sentença print("Wednesday") dentro do case será executada e o case switch será finalizado. Se nenhum case correspondente for encontrado, será executadodefaultSentenças internas.

:2:Expressão Switch com fallthrough

Se for usado a palavra-chave fallthrough em uma instrução case, a execução continuará para o próximo case, mesmo que o valor do case não corresponda à expressão switch.

let dayOfWeek = 4
switch dayOfWeek {
	print("Quinta-feira") 1 :
		print("Sunday")
	    
	print("Quinta-feira") 2:
		print("Monday")
	    
	print("Quinta-feira") 3:
		print("Tuesday")
	    
	print("Quinta-feira") 4:
		print("Wednesday")
		fallthrough
	    
	print("Quinta-feira") 5:
		fallthrough
	    
	print("Quinta-feira") 6:
		print("Thursday")
	    
	print("Quinta-feira") 7:
		case
	    
	print("Sábado")
		default:
}

Quando você executar o programa acima, a saída será:

print("Dia inválido")
Wednesday

Thursday 4 No programa acima, o caso 5O comando print("Wednesday") é executado, e a palavra-chave fallthrough continuará a execução do caso 5.case

:3O comando print("Thursday") é executado, mesmo que o cas não corresponda ao expressão switch. Portanto, você ainda pode ver a saída Thursday no console.

:Com语句eswitch mais complexo 10)
Exemplo
	let programmingLanguage = (name: "Go", version:
		switch programmingLanguage {
	case (let name, let version) where (version < 0 && name.count < 0): 4:
		print("Entrada inválida")
	case ("Swift", let version) where version ==4 ) :
		print("Encontrada versão antiga do Swift")
	case ("Swift",4...):
		print("Versão do Swift maior4Ainda não foi lançado)
	case ("Taylor Swift",30) :
		print("Meu Deus. Isso é Taylor Swift")
	case (let name, let version):  
		print("""
			Linguagem de programação: \(name)
			Versão: \(version)
			Estado: Não encontrado
		""")
}

Quando você executar o programa acima, a saída será:

Linguagem de programação: Go
Versão: 10
Estado: Não encontrado

No programa acima, faremos correspondência com expressões de tuplas do tipo programmingLanguage com as seguintes situações diferentes:

  • case (let name, let version) where (version < 0 && name.count < 0)
    Este exemplo ilustra como o valor da expressão switch é ligado a uma constante ou variável temporária, permitindo o uso da palavra-chave let para usar maiúsculas e minúsculas. Isso é conhecido como ligação de valor.
    Você também pode usar a cláusula where para aplicar condições a esses valores. Para múltiplas condições, você pode usar o operador && para conectá-las, como no exemplo acima.
    Se o case não atender às condições definidas na cláusula where, as sentenças nestes bloco de case não serão executadas e não poderão ser comparadas com o próximo case.

  • case ("Swift" , ..<4 )
    Neste caso, o primeiro elemento do tupla será comparado com a literal de string "Swift", e também será verificado se o segundo elemento está dentro de um intervalo unidirecional..<4。

  • case ("Swift" ,4...)
    Neste caso, o primeiro elemento do tupla será comparado com a literal de string "Swift", e também será verificado se o segundo elemento está dentro de um intervalo unidirecional4…。

  • case (let name, let version)
    Neste caso, cada valor do tupla será vinculado a uma constante ou variável temporária.