Swift Academy · Aula

Semântica de Índices de ArraySlice

Entenda por que os índices das fatias mantêm as posições originais.

Aula 2 de 413 etapas

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)
Grátis para começar

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

  1. Criação de Fatias com Intervalos
  2. Semântica de Índices de ArraySlice
  3. Conversão de Fatias de Volta para Arrays
  4. prefix, suffix e dropFirst
← Voltar para Swift Academy