0Pricing
Swift Academy · Aula

Conversão de Fatias de Volta para Arrays

Materialize uma fatia em um array independente.

Conversão de Fatias de Volta para Arrays é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 3 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 não são arrays

Um ArraySlice é um tipo distinto de Array. Muitas APIs esperam um Array concreto, portanto frequentemente é necessário fazer uma conversão.

let original = [1, 2, 3, 4, 5]
let slice = original[1..<4]
print(type(of: slice))

Array(slice)

Envolva uma fatia no inicializador Array(...) para criar um array novo e independente, com elementos copiados e índices baseados em zero.

let original = [10, 20, 30, 40, 50]
let slice = original[2..<5]
let array = Array(slice)
print(array)
print(type(of: array))

Os índices são reiniciados em zero

Após a conversão, o novo array é reindexado a partir de 0, ao contrário da fatia, que mantinha os índices do array pai.

let original = [1, 2, 3, 4, 5]
let slice = original[3..<5]
let copy = Array(slice)
print("slice start:", slice.startIndex)
print("array start:", copy.startIndex)

A conversão copia o armazenamento

A conversão força uma cópia. O novo array deixa de compartilhar o armazenamento com o array pai, portanto alterá-lo não afeta o original.

let original = [1, 2, 3, 4]
var copy = Array(original[1..<3])
copy[0] = 999
print("original:", original)
print("copy:", copy)

Retornando arrays de funções

Quando uma função retorna parte de um array, converta a fatia para que quem a chama receba um Array normal.

func firstThree(of nums: [Int]) -> [Int] {
    return Array(nums.prefix(3))
}
print(firstThree(of: [9, 8, 7, 6, 5]))

Passando para parâmetros de array

Se o parâmetro de uma API tiver o tipo [Int], você precisará converter a fatia antes de passá-la.

func total(_ values: [Int]) -> Int {
    return values.reduce(0, +)
}
let data = [1, 2, 3, 4, 5]
let result = total(Array(data[1..<4]))
print(result)

Quando a conversão é desnecessária

Se a sua função aceitar uma Sequence ou Collection genérica, poderá passar a fatia diretamente, sem convertê-la.

func describe<S: Sequence>(_ s: S) where S.Element == Int {
    print(Array(s))
}
let arr = [2, 4, 6, 8]
describe(arr[1..<3])

Compromisso de memória

As fatias evitam cópias e mantêm o armazenamento do vetor de origem ativo. Se mantiver uma fatia small de um vetor huge por muito tempo, converta-a em um vetor para que o big bloco de memória possa ser liberado.

let huge = Array(1...1000)
let keep = Array(huge[0..<3]) // small independent copy
print(keep)

Convertendo para um conjunto

Também poderá fornecer uma fatia a outros inicializadores de coleções, como Set.

let arr = [1, 2, 2, 3, 3, 3]
let uniqueTail = Set(arr[2..<6])
print(uniqueTail.sorted())

Ida e volta

Fatiar, converter e fatiar novamente é perfeitamente válido. Cada conversão é explícita e previsível.

let arr = [10, 20, 30, 40, 50]
let a = Array(arr[1..<4])
let b = Array(a[0..<2])
print(a)
print(b)

Boa prática

Continue trabalhando com fatias durante o cálculo e converta para Array apenas no limite em que armazena ou retorna o resultado.

let arr = [3, 1, 4, 1, 5, 9, 2]
let top3 = Array(arr.sorted(by: >)[0..<3])
print(top3)

Verificação rápida

Teste a conversão de fatias.

Recapitulação

Use Array(slice) para transformar um ArraySlice em um vetor independente com índices começando em zero e armazenamento copiado. Converta nos limites da API; mantenha as fatias durante o cálculo para evitar cópias adicionais.

let s = [1, 2, 3, 4, 5][2..<5]
let a = Array(s)
print(a, a.startIndex)

Perguntas Frequentes

A aula “Conversão de Fatias de Volta para Arrays” é grátis?

Sim — o texto completo de “Conversão de Fatias de Volta para Arrays” é 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 “Conversão de Fatias de Volta para Arrays”?

Materialize uma fatia em um array independente. 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 3 de 4.

Quanto tempo leva a aula “Conversão de Fatias de Volta para Arrays”?

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