Stride
Parte da seção Lógica e Fluxo do Journey de Swift da Coddy — lição 8 de 56.
Um intervalo percorre um passo de cada vez. Quando você quiser um tamanho de passo diferente, ou contar para trás, use stride.
Duas variantes: stride(from:to:by:) para antes do segundo valor (meio-aberto), stride(from:through:by:) pode incluí-lo (fechado):
for n in stride(from: 0, to: 10, by: 2) {
print(n)
}
// 0, 2, 4, 6, 8for n in stride(from: 10, through: 0, by: -2) {
print(n)
}
// 10, 8, 6, 4, 2, 0O argumento by: deve ter o sinal correto: positivo ao contar para cima, negativo ao contar para baixo. Se houver incompatibilidade, o loop será executado zero vezes.
Desafio
FácilLeia três números inteiros (três linhas): start, end, step. O passo pode ser positivo ou negativo. O intervalo é inclusivo em ambas as extremidades (use stride(from:through:by:)).
Imprima:
- Os valores no stride, unidos por
, - O número de valores produzidos
Para a entrada 0 / 10 / 3, a saída é:
0,3,6,9
4Para a entrada 10 / 0 / -2, a saída é:
10,8,6,4,2,0
6Folha de consulta
Use o stride quando você precisar de um tamanho de passo personalizado ou para fazer uma contagem regressiva.
stride(from:to:by:) — meio-aberto (exclui o valor final):
for n in stride(from: 0, to: 10, by: 2) { }
// 0, 2, 4, 6, 8stride(from:through:by:) — fechado (inclui o valor final):
for n in stride(from: 10, through: 0, by: -2) { }
// 10, 8, 6, 4, 2, 0O valor de by: deve corresponder à direção: positivo ao contar para cima, negativo ao contar para baixo. Uma incompatibilidade produz zero iterações.
Experimente você mesmo
let start = Int(readLine()!)!
let end = Int(readLine()!)!
let step = Int(readLine()!)!
// TODO: stride(from:through:by:), unir com vírgula, depois imprimir a contagem
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica e Fluxo
1Strings a Fundo
Contagem e ÍndicesCase e TrimBusca em StringsDivisão e JunçãoSubstituindo SubstringsRecapitulação - Verificação de Nome de Usuário4Conjuntos
Criando ConjuntosUnião e InterseçãoSubtração e Diferença SimétricaSubconjunto e SuperconjuntoRecapitulação - Filtro de Tags7Projeto - Monitor de Hábitos
Visão Geral do ProjetoMarcar como Concluído10Projeto - Mecanismo de Quiz
Visão Geral do ProjetoFazer Perguntas2Intervalos e Strides
Fechado vs Meio-AbertoStrideMétodos de IntervaloIntervalos no SwitchRecapitulação - Grade de Calendário5Funções de Ordem Superior Parte 1
MapFilterReduceEncadeando map, filter, reduceRecapitulação - Estatísticas de Palavras