Subscripts para indexação personalizada
Defina subscripts personalizados para ler e escrever elementos com sintaxe semelhante à de arrays, adicione acessores seguros, aceite indexação com vários parâmetros e até subscripts de tipo (static).
Subscripts para indexação personalizada é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 4 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.
Visão geral
Use subscritos para acessar dados com a sintaxe de colchetes. Você pode torná-los somente para leitura ou de leitura e escrita e até aceitar vários índices.
Subscrito de leitura e escrita
Crie um subscrito de obtenção/definição para expor o armazenamento interno com uma sintaxe semelhante à de um vetor.
struct Box {
private var items: [String] = []
init(_ values: [String]) { self.items = values }
subscript(index: Int) -> String {
get { items[index] } // may trap if out of bounds (like Array)
set { items[index] = newValue }
}
}
var b = Box(["a","b","c"])
print(b[1]) // "b"
b[1] = "B"
print(b[1]) // "B"Subscrito seguro
Retorne um valor opcional para evitar falhas com índices inválidos: um subscrito seguro e fácil de usar.
extension Array {
subscript(safe i: Int) -> Element? {
return indices.contains(i) ? self[i] : nil
}
}
let arr = [10,20]
print(arr[safe: 1] ?? -1) // 20
print(arr[safe: 5] ?? -1) // -1Vários parâmetros
Os subscritos podem receber vários parâmetros — algo excelente para matrizes ou acesso por coordenadas.
struct Matrix {
let rows: Int, cols: Int
private var grid: [Int]
init(rows: Int, cols: Int, fill: Int = 0) {
self.rows = rows; self.cols = cols
self.grid = Array(repeating: fill, count: rows*cols)
}
private func index(_ r: Int, _ c: Int) -> Int { r*cols + c }
subscript(r: Int, c: Int) -> Int {
get { grid[index(r,c)] }
set { grid[index(r,c)] = newValue }
}
}
var m = Matrix(rows: 2, cols: 3)
m[0, 2] = 7
print(m[0, 2])Subscrito de tipo
Adicione um subscrito de tipo (com estático) para indexar o próprio tipo, e não uma instância.
struct Roman {
static let map: [Int:String] = [1:"I", 5:"V", 10:"X"]
static subscript(_ n: Int) -> String? {
return map[n]
}
}
print(Roman[5] ?? "?") // "V"Dicas
Dicas:
- Prefira retornar valores opcionais para obter acesso seguro.
- Mantenha os subscritos simples; a lógica pesada pertence aos métodos.
- Dê nomes claros aos parâmetros (por exemplo,
[row:col:]).
Significado dos subscritos
Verificação rápida: o que os subscritos permitem fazer?
Recapitulação
Recapitulação: crie subscritos de leitura e escrita, adicione acessadores opcionais seguros, ofereça indexação com vários parâmetros e defina até subscritos de tipo.
Perguntas Frequentes
A aula “Subscripts para indexação personalizada” é grátis?
Sim — o texto completo de “Subscripts para indexação personalizada” é 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 “Subscripts para indexação personalizada”?
Defina subscripts personalizados para ler e escrever elementos com sintaxe semelhante à de arrays, adicione acessores seguros, aceite indexação com vários parâmetros e até subscripts de tipo (static). 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 4 de 4.
Quanto tempo leva a aula “Subscripts para indexação personalizada”?
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
- Propriedades e subscripts
- lazy e observadores de propriedades
- Propriedades computadas com get/set
- Subscripts para indexação personalizada