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

Swift para-循环

在本文中,您将了解for-Neste artigo, você aprenderá sobre for

Exemplos de uso e variações do loop in-for

in loop para executar um conjunto de tarefas em um período de tempo fixo. Esses loops percorrem qualquer sequência, como itens em um array, ranges ou caracteres em uma string.-Também usamos for

O loop in executa processos repetitivos em um período de tempo fixo.-Por que precisamos de for

loop in?

print("Olá, Mundo!")

Imaginem que alguém te pediu para escrever um programa que imprima Hello,World!na tela! Sua solução seria:

print("Olá, Mundo!")
print("Olá, Mundo!")
print("Olá, Mundo!")
print("Olá, Mundo!")
print("Olá, Mundo!")

Bem, parece que demora muito para completar cinco vezes o mesmo código para fazer o mesmo trabalho. Se for assim, se alguém pedir que você escreva um programa que imprima Hello,World!na tela várias vezes, o que você fará? Se eles mudarem de ideia e disserem que você deve escrever um programa que imprima Hello,World!na tela cinco vezes, o que fazer? Se você não souber sobre loops, sua solução pode ser:

Uma solução ingênua seria escrever uma sentença print várias vezes. Parece louco, mas usando for-Algumas linhas de código do loop in, que podem encontrar uma solução melhor:

for i in 1...100 {
	//Imprimir Hello World na tela 100 vezes
	print("Olá, Mundo!")
}

Não se preocupe com a sintaxe, discutiremos isso abaixo.

For-Sintaxe do loop in

Você pode criar um loop for in no Swift assim:

for <value> in <range> {
	<some work here>
}

O loop acima percorre uma faixa, e podemos acessar cada elemento retornado da faixa na variável <value>. Se você não entender ranges, pode consultar o seguinte artigo:Faixas do Swift.

Como ele funciona?

  • A sequência iterada é uma <range>.

  • Define <value> como o primeiro número da faixa e executa a sentença dentro do loop < Alguns trabalhos aqui >

  • Após a execução da sentença, <value> é atualizado para conter o segundo valor da <range>, e a sentença <Alguns trabalhos aqui> é executado novamente.

  • Este processo continua até alcançar o final da faixa e parar o loop.

Exemplo1: for-Como o loop in funciona no Swift

for i in 1...3 .
	print("Olá mundo!. Valor é \(i)")
}

Quando o programa é executado, a saída é:

Olá mundo!. Valor é 1
Olá mundo!. Valor é 2
Olá mundo!. Valor é 3

No programa acima, a faixa da sequência que será iterada é1(.. <),portanto, o intervalo da sequência a ser percorrida é3.

O valor de i é configurado para a faixa (1o primeiro número dentro do bloco ), e é atualizado para o próximo número da faixa em cada iteração. Este processo continua até a faixa (3. Fim do bloco ).

Passo executado dentro do loop
Iteração

O valor retornado da faixa (i)

Saída
11Olá mundo!. O valor é 1
22Olá mundo!. O valor é 2
33Olá mundo!. O valor é 3

no for-descartar valores de intervalo no loop

Se você não usar valores de intervalo dentro do loop, pode usar (sublinhado _) descartar em Swift, conforme mostrado a seguir:

for _ in <range> {
	<some work here>
}

Exemplo2no loop-descartar valores de intervalo no loop

//Este exemplo ignora o valor e usa o operador de intervalo semi-aberto
for _ in 1..<3 .
	{
}

Quando o programa é executado, a saída é:

print("Hello world!")
print("Hello world!")

Hello world!No programa acima, devido ao usooperador de intervalo semi-aberto1(.. <),portanto, o intervalo da sequência a ser percorrida é2até1que inclui o limite inferior (3) mas não inclui o limite superior (

sublinhado _ ignora o intervalo (1) e execute a sentença print. Chame novamente a sentença print para a próxima iteração e o processo termina porque2é o último valor dentro do intervalo.

sem valor de intervalo-no passo do loop
Iteraçãovalores retornados do intervaloSaída
1descartarHello world!
2descartarHello world!

usar loop com intervalo fixo-no loop

Se você deseja que o loop aumente em um valor fixo (em vez de um intervalo) em cada iteração, você deve usar o método stride.

Exemplo3:usar stride no loop-no loop

let intervalo = 2
for i in stride(from: 1, to: 10, by: intervalo) {
	print(i)
}

Quando o programa é executado, a saída é:

1
3
5
7
9

No programa acima, a função stride retorna a sequência de números:1、3、5、7、9.

o valor de i é configurado para a sequência (1) do primeiro número, e execute a sentença print dentro do loop, que imprime " 1"

Após executar esta sentença, atualize o valor de i para outro valor (3))), e novamente chame a sentença print. Este processo continua até que todos os elementos da sequência sejam acessados.

usar stride para executar passos no loop
valorcondição (Valor < Fim)i (saída)
11 < 10 (true)1
1 + 2 = 33 < 10 (true)3
1 + 2 * 2 = 55 < 10 (true)5
1 + 3 * 2 = 77 < 10 (true)7
1 + 4 * 2 = 99 < 10 (true)9
1 + 5 * 2 = 1111 < 10 (false)Stops

Como usar for-acessar os elementos da coleção no loop?

Suponha que você tenha um array de strings, conforme mostrado a seguir. Se você não conhece arrays, pode considerar arrays como um único contêiner que pode armazenar múltiplos valores. Para mais detalhes, consulteArray de Swift.

let programaçãoLanguages = ["Swift", "Java", "Go", "JavaScript", "Kotlin", "Python"]

O que fazer se alguém te disser para imprimir todos os idiomas de programação?

Um método é usar o índice de programaçãoLanguages[0], programaçãoLanguages[1]... para acessar esses elementos, e assim por diante, até que todos os elementos sejam obtidos. Isso é muito tedioso.

Portanto, o loop é útil. Você pode usar o loop for in para iterar:

Exemplo4:usando for-no loop in, você pode acessar os elementos do array (coleção)

let programmingLanguages = ["Swift", "Java", "Go", "JavaScript", "Kotlin", "Python"]
for language in programmingLanguages {
      print(language)
}

Quando o programa é executado, a saída é:

Swift
Java
Go
JavaScript
Kotlin
Python

No programa acima, a sequência a ser iterada é um array de strings.

O valor de language é configurado como o primeiro elemento do array e a sentença print dentro do loop é executada,输出的内容为“ Swift” no console.

Após a execução da sentença, o valor de language será atualizado para o próximo elemento do array e a sentença print será chamada novamente. Este processo continua até que o último elemento do array seja acessado.

Exemplo5:usando for-no loop in, você pode acessar os elementos da string (coleção)

Devido ao SwiftStringTambém é uma coleção, então você pode usar o loop for para acessar cada caractere na string.

for value in "I♥Swift!" {
	print(value)
}

Quando o programa é executado, a saída é:

I
♥
S
w
i
f
t
!

Como usar for-no loop in, você pode acessar o índice da coleção?

Se você quiser acessar o índice do array (a posição do elemento no array, ou seja, 0,1、2),então você precisa usar o método enumerated:

Exemplo6:usando for-no loop in, você pode acessar o índice do array

let programmingLanguages = ["Swift", "Java", "Go", "JavaScript", "Kotlin", "Python"]
for (index, language) in programmingLanguages.enumerated() {
      print("\(index):\(language)")
}

Quando o programa é executado, a saída é:

0:Swift
1:Java
2:Go
3:JavaScript
4:Kotlin
5:Python

Aqui, o método enumeira retorna um tuplo (Int, String) composto por índice (Int) e valor (String) de cada item no array. Por exemplo: (0,Swift), (1,Java)

Usando for-no loop in, você pode acessar individualmente esses itens no tuplo. Se você não conhece o Tuplo (tupla), pode simplesmente vê-lo como um contêiner que pode conter valores de diferentes tipos.

Como usar for-para usar a cláusula where no loop in para filtrar elementos?

Você também pode usarwhereA cláusula where remove o conteúdo do loop for

for value in "I♥Swift!" where value != "!" {
	print(value) //Remover o exclamador
}

Quando o programa é executado, a saída é:

I
♥
S
w
i
f
t

Na programação acima, a sequência a ser iterada é a string (conjunto de caracteres).

O value é configurado como o primeiro caractere da string e verificado com a condição where. Se a condição retornar true, o bloco dentro do loop será executado (sentença de impressão), que imprime “I” no console de controle.

Após a execução da sentença, o value será atualizado para o próximo caractere da string e novamente verificado a condição. Se a condição retornar false, o bloco não será executado e o value será atualizado para o próximo caractere.

Este processo continua até que seja acessado o último caractere da string.

Usar for-Filtrar nas etapas de execução do loop in
Iteraçãovaluevalue != “!”Saída
1ItrueI
2true
3StrueS
4wtruew
5itruei
6ftruef
7ttruet
8!false