Latest web development tutorials

roteiro subscrito Swift

roteiro subscrito pode ser definido na classe (Classe), estrutura (estrutura) e enumeração (enumeração) destes objectivos pode ser considerado o acesso ao objeto, uma coleção de atalhos ou sequências não precisa chamar as atribuições específicas de instância e acesso métodos.

Por exemplo, um script com acesso a um elemento exemplo índice de matriz (Array) pode escrever someArray [índice], elemento de acesso a instância do dicionário (dicionário) pode escrever someDictionary [chave].

Para o mesmo objectivo pode definir roteiro subscrito múltiplo, diferentes tipos de valores de índice a ser sobrecarregado, eo número de valores de índice pode ser plural.


Subscrito sintaxe de script e Aplicação

gramática

roteiro subscrito permite valores de índice, passando um ou mais dos seguintes casos entre colchetes ao acesso e atribuição por exemplo.

A sintaxe é semelhante à mistura de métodos de instância e propriedades computacional.

E a definição de um método de instância é semelhante à definição do roteiro subscrito subscrito as palavras-chave declarar explicitamente o Senado (um ou mais) e tipo de retorno.

E exemplos de diferentes métodos é roteiro subscrito pode ser definido para leitura e gravação ou somente leitura. Desta forma, um pouco como getter e propriedades computacionais setter:

subscript(index: Int) -> Int {
    get {
        // 用于下标脚本值的声明
    }
    set(newValue) {
        // 执行赋值操作
    }
}

exemplo 1

import Cocoa

struct subexample {
    let decrementer: Int
    subscript(index: Int) -> Int {
        return decrementer / index
    }
}
let division = subexample(decrementer: 100)

print("100 除以 9 等于 \(division[9])")
print("100 除以 2 等于 \(division[2])")
print("100 除以 3 等于 \(division[3])")
print("100 除以 5 等于 \(division[5])")
print("100 除以 7 等于 \(division[7])")

A saída de execução de programa acima é:

100 除以 9 等于 11
100 除以 2 等于 50
100 除以 3 等于 33
100 除以 5 等于 20
100 除以 7 等于 14

No exemplo acima, por estrutura Sub-exemplo cria uma instância de uma operação de divisão. Um valor de 100 como o argumento estrutura construtor passou para inicializar instância membro decrementer.

Você pode obter o resultado pelo roteiro subscrito, tais como a divisão [2] é 100 dividido por dois.

exemplo 2

import Cocoa

class daysofaweek {
    private var days = ["Sunday", "Monday", "Tuesday", "Wednesday",
        "Thursday", "Friday", "saturday"]
    subscript(index: Int) -> String {
        get {
            return days[index]   // 声明下标脚本的值
        }
        set(newValue) {
            self.days[index] = newValue   // 执行赋值操作
        }
    }
}
var p = daysofaweek()

print(p[0])
print(p[1])
print(p[2])
print(p[3])

A saída de execução de programa acima é:

Sunday
Monday
Tuesday
Wednesday

uso

De acordo com o roteiro subscrito cenários de uso diferente também tem um significado diferente.

Normalmente roteiro subscrito é usado para acessar a coleção (collection), a lista de atalhos (lista) ou sequência (sequência) de elementos.

Você é livre para implementar roteiro índice em sua própria classe específica ou estrutura para fornecer a funcionalidade apropriada.

Por exemplo, dicionário Swift (Dicionário) para atingir a operação de acesso por exemplo o valor do roteiro subscrito armazenados nele. O próximo valor padrão utilizado no roteiro e dicionário índice do mesmo tipo, e o valor de um tipo de valor dicionário é atribuído ao valor do índice de pôr o pé ao dicionário:

import Cocoa

var numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
numberOfLegs["bird"] = 2

print(numberOfLegs)

A saída de execução de programa acima é:

["ant": 6, "bird": 2, "cat": 4, "spider": 8]

O exemplo que se define uma variável chamada numberOfLegs e utilizar um dicionário literal para inicializar uma instância do dicionário contém três pares de chaves. dicionário numberOfLegs armazenado tipo de valor Dicionário inferido . Depois de a instância dicionário é criada pela forma como o valor inteiro roteiro subscrito 2 atribuído ao índice exemplo dicionário para a localização do pássaro.


opções de script Subscrito

roteiro subscrito permite que qualquer número de parâmetros para o índice, e cada tipo também não há limite para o Senado.

Retorno do índice Valor do script pode ser de qualquer tipo.

roteiro subscrito pode usar parâmetros variáveis ​​e parâmetros variáveis.

Uma classe ou estrutura pode ser de acordo com suas próprias necessidades para fornecer mais dos seguintes scripts padrão, ao definir o roteiro subscrito passando parâmetros para distinguir o tipo, ele irá corresponder automaticamente o script de tempo de execução de scripts índice subscrito apropriado, que éroteiro subscrito sobrecarregado.

import Cocoa

struct Matrix {
    let rows: Int, columns: Int
    var print: [Double]
    init(rows: Int, columns: Int) {
        self.rows = rows
        self.columns = columns
        print = Array(count: rows * columns, repeatedValue: 0.0)
    }
    subscript(row: Int, column: Int) -> Double {
        get {
            return print[(row * columns) + column]
        }
        set {
            print[(row * columns) + column] = newValue
        }
    }
}
// 创建了一个新的 3 行 3 列的Matrix实例
var mat = Matrix(rows: 3, columns: 3)

// 通过下标脚本设置值
mat[0,0] = 1.0
mat[0,1] = 2.0
mat[1,0] = 3.0
mat[1,1] = 5.0

// 通过下标脚本获取值
print("\(mat[0,0])")
print("\(mat[0,1])")
print("\(mat[1,0])")
print("\(mat[1,1])")

A saída de execução de programa acima é:

1.0
2.0
3.0
5.0

estrutura de Matrix fornece um dois argumentos do construtor passados ​​dois parâmetros são as linhas e colunas, crie uma matriz do tipo Double o suficiente para acomodar o número de linhas * colunas. Para armazenamento, o tamanho de cada elemento da matriz e o valor inicial de matriz de 0,0.

Você pode construir uma nova ocorrência Matrix, passando a linha apropriada e coluna do número.