Fatiamento de Arrays Parte 1
Parte da seção Fundamentos do Journey de Swift da Coddy — lição 73 de 86.
Às vezes, você não precisa de um array inteiro — apenas uma parte dele. O Swift facilita a extração de um subconjunto de elementos usando fatiamento de array com operadores de intervalo.
Para obter um slice, você usa um intervalo dentro dos colchetes de subscrito. A abordagem mais comum utiliza o operador de intervalo semiaberto (..<), que inclui o índice inicial, mas exclui o índice final:
let numbers = [10, 20, 30, 40, 50]
let slice = numbers[1..<4]
print(slice) // [20, 30, 40]Aqui, 1..<4 nos dá os elementos nos índices 1, 2 e 3 — mas não o índice 4. Isso é útil quando você sabe exatamente onde quer parar.
Se você quiser incluir o índice final, use o operador de intervalo fechado (...):
let letters = ["a", "b", "c", "d", "e"]
let slice = letters[1...3]
print(slice) // ["b", "c", "d"]Um detalhe importante: o resultado do fatiamento é um ArraySlice, não um Array comum. Se você precisar de um array real, envolva-o com Array():
let original = [1, 2, 3, 4, 5]
let sliced = Array(original[0..<3])
print(sliced) // [1, 2, 3]Desafio
FácilEscreva uma função getMiddleElements que recebe numbers, start e end e retorna uma fatia (slice) do array a partir do índice inicial até (mas não incluindo) o índice final.
Use o operador de intervalo semiaberto (..<) para extrair a parte especificada do array e retorná-la como um array regular.
Parâmetros:
numbers([Int]): O array a ser fatiadostart(Int): O índice inicial (inclusivo)end(Int): O índice final (exclusivo)
Retorno: Um array contendo elementos do índice inicial até (mas não incluindo) o índice final ([Int])
Exemplo: Se numbers for [10, 20, 30, 40, 50, 60], start for 1 e end for 4, a função deve retornar [20, 30, 40].
Folha de consulta
O Swift permite extrair uma parte de um array usando o fatiamento de array (array slicing) com operadores de intervalo.
Use o operador de intervalo semiaberto (..<) para fatiar de um índice inicial até (mas não incluindo) um índice final:
let numbers = [10, 20, 30, 40, 50]
let slice = numbers[1..<4]
print(slice) // [20, 30, 40]Use o operador de intervalo fechado (...) para incluir o índice final:
let letters = ["a", "b", "c", "d", "e"]
let slice = letters[1...3]
print(slice) // ["b", "c", "d"]O fatiamento de array retorna um ArraySlice. Para convertê-lo em um Array comum, envolva-o com Array():
let original = [1, 2, 3, 4, 5]
let sliced = Array(original[0..<3])
print(sliced) // [1, 2, 3]Experimente você mesmo
func getMiddleElements(numbers: [Int], start: Int, end: Int) -> [Int] {
// Escreva o código aqui
}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
4Operadores Parte 1
Operadores AritméticosOperador de MóduloAtribuição CompostaRecapitulação - Matemática SimplesOperadores de Comparação7IO Básico
Função PrintInterpolação de StringsEntrada ReadLineConversão de TiposRecapitulação - Até 120Recapitulação - Verdadeiro ou Falso10Funções
Declarar uma FunçãoParâmetros e ArgumentosValores de RetornoRótulos de ArgumentosRecapitulação - Função SigmaRecapitulação - Função de ValidaçãoValores Padrão13Iterando sobre Sequências
Iterando sobre ElementosO Método EnumeratedIterando sobre Strings P1Iterando sobre Strings P22Variáveis
Let vs VarAnotações de TipoNúmerosStringBooleanosConvenções de NomenclaturaRecapitulação - Inicializar Variáveis5Operadores Parte 2
Operadores Lógicos Parte 1Operadores Lógicos Parte 2Recapitulação - Lógica SimplesOperadores Lógicos Parte 3Operador Ternário8Calculadora de Divisão de Conta
Mensagem de Boas-vindasObtendo Entrada11FizzBuzz com um Diferencial
Visão Geral do JogoA Função FizzBuzz14Arrays Avançados
Fatiamento de Arrays Parte 1Fatiamento de Arrays Parte 2Operadores de SequênciaO Método Contains3Opcionais
O que são OpcionaisDesembrulhando com If LetGuard LetOperador de Coalescência NulaRecapitulação - Desembrulho Seguro6Tomada de Decisão
Estrutura IfIf - ElseRecapitulação - Calculadora SimplesEstrutura SwitchSwitch com Intervalos9Loops
Loop For-InLoop WhileLoop Repeat-WhileBreakContinueRecapitulação - FatorialIntervalos em LoopsLoop AninhadoRecapitulação - Entrada Dinâmica12Fundamentos de Arrays
Declarando um ArrayAcessando ElementosModificando ArraysMétodos de ArrayRecapitulação - Lista de ProdutosRecapitulação - Array InvertidoTuplas15Rastreador de Despesas Diárias
Visão Geral do ProjetoSair do Programa