English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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 é:
switch variável/Expressão { case valor1: // Sentença case valor2: // Sentença print("Sábado") // Sentença }
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.
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.
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
: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.