SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
15.11.2024

Lição: 32: Subscripting em Swift

Em Swift, os subscripts oferecem uma maneira conveniente de acessar elementos em uma coleção, lista ou sequência. Eles permitem que você use colchetes ([]) para recuperar ou modificar valores dentro de tipos que atendem à sintaxe de subscript. Os subscripts podem ser definidos em classes, estruturas e enumerações, tornando-os um recurso poderoso para manipulação de dados.

Sintaxe Básica de Subscript

A forma mais básica de um subscript consiste em um único índice. Veja como definir e usar um subscript simples:

Definindo um Subscript

struct TabelaDeMultiplicação {
    let multiplicador: Int

    subscript(índice: Int) -> Int {
        return multiplicador * índice
    }
}

Usando o Subscript

let tabelaDeTres = TabelaDeMultiplicação(multiplicador: 3)
print(tabelaDeTres[1])  // Saída: 3
print(tabelaDeTres[5])  // Saída: 15

No exemplo acima, definimos uma estrutura TabelaDeMultiplicação com um subscript que recebe um índice inteiro e retorna o produto do multiplicador pelo índice.

Vários Índices

Você também pode definir subscripts que aceitam múltiplos parâmetros. Veja como fazer isso:

Definindo um Subscript com Múltiplos Parâmetros

struct Matriz {
    let linhas: Int, colunas: Int
    var grade: [Double]

    init(linhas: Int, colunas: Int) {
        self.linhas = linhas
        self.colunas = colunas
        grade = Array(repetindo: 0.0, contagem: linhas * colunas)
    }

    subscript(linha: Int, coluna: Int) -> Double {
        get {
            return grade[(linha * colunas) + coluna]
        }
        set {
            grade[(linha * colunas) + coluna] = newValue
        }
    }
}

Usando o Subscript de Múltiplos Parâmetros

var matriz = Matriz(linhas: 2, colunas: 2)
matriz[0, 1] = 1.5
print(matriz[0, 1])  // Saída: 1.5

Na estrutura Matriz, definimos um subscript que aceita dois parâmetros, representando os índices de linha e coluna. O acessor get recupera o valor da grade, enquanto o acessor set permite que você o modifique.

Subscripting com Índices de String

Você também pode definir subscripts que usam parâmetros de string. Isso é particularmente útil em coleções personalizadas ou dicionários.

Definindo um Subscript com Índices de String

struct PerfilDeUsuario {
    var dados: [String: String] = [:]

    subscript(chave: String) -> String? {
        get {
            return dados[chave]
        }
        set {
            dados[chave] = newValue
        }
    }
}

Usando o Subscript com Índice de String

var perfil = PerfilDeUsuario()
perfil["usuario"] = "joao_doe"
print(perfil["usuario"])  // Saída: Optional("joao_doe")

Neste exemplo, a estrutura PerfilDeUsuario utiliza um subscript que aceita uma chave do tipo string para acessar dados do usuário.

Resumo

Os subscripts em Swift oferecem uma maneira limpa e intuitiva de acessar e modificar os elementos de coleções ou tipos de dados personalizados. Eles podem aceitar qualquer número de parâmetros e podem até ser definidos com chaves de string para maior usabilidade. Ao usar subscripts, você pode simplificar a sintaxe necessária para interagir com seus tipos personalizados, mantendo a flexibilidade necessária para várias estruturas de dados.

Conclusão

Com esta compreensão dos subscripts em Swift, você está agora equipado para criar tipos de dados mais sofisticados e amigáveis ao usuário. Seja construindo uma matriz, um dicionário personalizado ou qualquer outra coleção, os subscripts podem ajudar a simplificar seu código e aumentar a legibilidade de seus programas. Continue experimentando com subscripts para compreender totalmente seu poder e utilidade!

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!