Semântica de Índices de ArraySlice
Entenda por que os índices das fatias mantêm as posições originais.
Semântica de Índices de ArraySlice é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Swift Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Swift Academy inclui 4 aulas no total.
As fatias mantêm os índices originais
Uma surpresa importante: um ArraySlice não reindexa a partir de zero. Ele mantém os mesmos índices que tinha no array pai.
let arr = [10, 20, 30, 40, 50]
let slice = arr[2..<5]
print(slice.startIndex)
print(slice.endIndex)startIndex nem sempre é zero
O startIndex de uma fatia é igual ao limite inferior usado para criá-la. Para arr[2..<5], o índice inicial é 2.
let arr = [1, 2, 3, 4, 5, 6]
let slice = arr[3..<6]
print("start:", slice.startIndex)
print("first value:", slice[slice.startIndex])Acessando uma fatia por índice
Como os índices são preservados, você deve usar os próprios índices da fatia. Acessar slice[0] em uma fatia que começa no índice 2 causará uma falha durante a execução.
let arr = [100, 200, 300, 400]
let slice = arr[2..<4]
print(slice[2])
print(slice[3])Use startIndex com segurança
Para obter o primeiro elemento independentemente de onde a fatia começa, use slice.first ou slice[slice.startIndex].
let arr = [5, 6, 7, 8, 9]
let slice = arr[2..<5]
print(slice.first ?? -1)
print(slice[slice.startIndex])endIndex fica depois do último
Assim como nos arrays, endIndex aponta para uma posição depois do último elemento válido. Acessar por índice em endIndex é inválido.
let arr = [11, 22, 33, 44]
let slice = arr[1..<3]
print("endIndex:", slice.endIndex)
print("last valid:", slice[slice.endIndex - 1])Contagem versus indexação
O count de uma fatia é o número de elementos, que pode ser diferente de seu endIndex. Nunca presuma que count é igual ao último índice.
let arr = [0, 1, 2, 3, 4, 5]
let slice = arr[3..<6]
print("count:", slice.count)
print("startIndex:", slice.startIndex)Propriedade de índices
Use a propriedade indices para iterar com segurança sobre o intervalo de índices válidos de uma fatia.
let arr = [10, 20, 30, 40, 50]
let slice = arr[1..<4]
for i in slice.indices {
print(i, slice[i])
}Por que preservar os índices
Preservar os índices permite associar uma posição na fatia ao array original sem manter informações adicionais. O índice encontrado também é válido no array pai.
let arr = ["a", "b", "c", "d", "e"]
let slice = arr[2..<5]
if let idx = slice.firstIndex(of: "d") {
print("found at parent index:", idx)
print("parent has:", arr[idx])
}enumerated() reinicia em zero
Se quiser posições baseadas em zero, use enumerated(). Ele produz deslocamentos começando em 0, independentemente do startIndex da fatia.
let arr = [9, 8, 7, 6, 5]
let slice = arr[2..<5]
for (offset, value) in slice.enumerated() {
print(offset, value)
}Distância desde start
Para calcular um deslocamento baseado em zero a partir de um índice, use distance(from:to:).
let arr = [1, 2, 3, 4, 5]
let slice = arr[2..<5]
let idx = slice.startIndex + 1
let offset = slice.distance(from: slice.startIndex, to: idx)
print("offset:", offset, "value:", slice[idx])Um erro comum
Esquecer que as fatias mantêm os índices do array pai é um dos erros mais comuns no Swift. Prefira sempre first, enumerated() ou startIndex a um 0 codificado diretamente.
let arr = [100, 200, 300, 400, 500]
let slice = arr[3..<5]
// Safe: use first, not slice[0]
print(slice.first ?? 0)Verificação rápida
Raciocine sobre os índices das fatias.
Recapitulação
Um ArraySlice mantém os índices do array pai: seu startIndex é o limite inferior, não zero. Use first, startIndex, indices ou enumerated() para acessar com segurança; nunca use um 0 codificado diretamente.
let slice = [5, 6, 7, 8, 9][3..<5]
print(slice.startIndex, slice.first ?? -1)Aprenda Swift com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 122
- Aulas
- 409
Perguntas Frequentes
A aula “Semântica de Índices de ArraySlice” é grátis?
Sim — o texto completo de “Semântica de Índices de ArraySlice” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Swift Academy, atualize para CoddyKit PRO. O curso de Swift Academy inclui 4 aulas no total.
O que vou aprender em “Semântica de Índices de ArraySlice”?
Entenda por que os índices das fatias mantêm as posições originais. Você pratica Swift Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Swift Academy?
Nenhuma experiência prévia é necessária. Swift Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Semântica de Índices de ArraySlice”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Swift Academy?
Sim. Cada aula de Swift Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Criação de Fatias com Intervalos
- Semântica de Índices de ArraySlice
- Conversão de Fatias de Volta para Arrays
- prefix, suffix e dropFirst