Latest web development tutorials

script de Swift indice

script Subscript peut être définie dans la classe (classe), structure (structure) et l'énumération (énumération) de ces objectifs peut être considéré comme l'accès à l'objet, une collection de raccourcis ou de séquences ne pas besoin d'appeler les missions spécifiques à l'instance et l'accès méthodes.

Par exemple, un script avec l'accès à un élément d'instance index de tableau (Array) peut écrire someArray [index], l'accès à l'élément d'instance dictionnaire (Dictionary) peut écrire someDictionary [key].

Pour le même objectif peut définir script indice multiple, différents types de valeurs d'index à être surchargés, et le nombre de valeurs d'index peuvent être pluriel.


Subscript syntaxe du script et l'application

grammaire

script Subscript permet aux valeurs d'index en utilisant une ou plusieurs des cas suivants entre crochets d'accès et de la cession, par exemple.

La syntaxe est similaire à mélanger les méthodes d'instance et de la propriété de calcul.

Et la définition d'une méthode d'instance est similaire à la définition de l'écriture Souscrit Souscrit mots-clés déclarer explicitement le Sénat (une ou plusieurs) et le type de retour.

Et des exemples de différentes méthodes est script indice peut être réglé en lecture-écriture ou en lecture seule. De cette façon, un peu comme getter et les propriétés de calcul setter:

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

exemple 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])")

La sortie de l'exécution du programme ci-dessus est la suivante:

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

Dans l'exemple ci-dessus, par la structure sous-exemple crée une instance d'une opération de division. Une valeur de 100 comme argument la structure du constructeur passé à initialiser instance membre décrémenteur.

Vous pouvez obtenir le résultat par le script de l'indice, comme la division [2] est 100 divisé par deux.

exemple 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])

La sortie de l'exécution du programme ci-dessus est la suivante:

Sunday
Monday
Tuesday
Wednesday

usage

Selon différents scénarios d'utilisation de script indice a aussi un sens différent.

Typiquement le script indice est utilisé pour accéder à la collection (collection), la liste de raccourcis (liste) ou d'une séquence (séquence) d'éléments.

Vous êtes libre de mettre en œuvre le script d'index dans votre propre classe particulière ou struct pour fournir la fonctionnalité appropriée.

Par exemple, le dictionnaire Swift (Dictionnaire) pour réaliser l'opération d'accès par la valeur de l'instance de script indice stockées. La valeur standard suivante utilisée dans l'index de script et le dictionnaire du même type, et la valeur d'un type dictionnaire de valeur est affectée à la valeur d'index mis les pieds dans le dictionnaire:

import Cocoa

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

print(numberOfLegs)

La sortie de l'exécution du programme ci-dessus est la suivante:

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

L'exemple définit une variable appelée numberOfLegs et utiliser un dictionnaire littéral pour initialiser une instance du dictionnaire contient trois paires de clés. dictionnaire numberOfLegs type de valeur stockée Dictionnaire inférée . Après l'instance dictionnaire est créé par la façon dont la valeur entière de script indice 2 affecté à l'index d'instance dictionnaire pour l'emplacement de l'oiseau.


options de script de Subscript

le script Subscript permet un certain nombre de paramètres dans l'index, et chaque type est également aucune limite au Sénat.

Retour indice de la valeur du script peut être tout type.

script Subscript peut utiliser des paramètres variables et des paramètres variables.

Une classe ou une structure peut être en fonction de leurs propres besoins pour fournir plusieurs des scripts standards suivants, lors de la définition du script de l'indice en passant des paramètres pour distinguer le type, il correspond automatiquement des scripts en indice l'exécution du script de l'indice approprié, ce qui estscript indice surchargé.

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])")

La sortie de l'exécution du programme ci-dessus est la suivante:

1.0
2.0
3.0
5.0

structure Matrix fournit un deux arguments du constructeur ont passé deux paramètres sont les lignes et les colonnes, créer un tableau de type assez double pour accueillir le nombre de lignes * colonnes. Pour le stockage, la taille de chaque élément de la matrice et la valeur initiale de la matrice de 0,0.

Vous pouvez construire une nouvelle instance de la matrice en faisant passer la ligne et la colonne appropriée du nombre.