Latest web development tutorials

Swift Index Skript

Subscript-Skript kann in der Klasse (Klasse), Struktur (Struktur) und Aufzählung (Enumeration) dieser Ziele definiert werden können, um den Objektzugriff in Betracht gezogen werden, eine Sammlung von Verknüpfungen oder Sequenzen brauchen nicht die instanzspezifischen Zuordnungen zu rufen und den Zugang Methoden.

Zum Beispiel kann ein Skript mit Zugriff auf ein Array-Index (Array) Instanz Element schreiben EinArray [index], Element Zugriff auf das Wörterbuch (Dictionary) Instanz kann someDictionary [key] schreiben.

Für das gleiche Ziel mehrere Subskript Skript definieren, um verschiedene Arten von Indexwerten überlastet werden, und die Anzahl der Indexwerte Plural sein.


Subscript Skript Syntax und Anwendung

Grammatik

Subscript Skript können Sie Indexwerte von einem oder mehreren der folgenden Fälle, in eckigen Klammern für den Zugriff und die Zuordnung zum Beispiel vorbei.

Die Syntax ist ähnlich Instanzmethoden und Rechen Eigenschaft zu mischen.

Und die Definition einer Instanz-Methode ähnelt der Definition des Index Index Skript-Keywords explizit den Senat erklären (ein oder mehrere) und Typ zurückzukehren.

Und Beispiele verschiedener Methoden ist der Index Skript gesetzt werden kann, um Lese- und Schreibberechtigung oder nur Lesezugriff. Auf diese Weise ein wenig wie Getter und Setter-Rechen Eigenschaften:

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

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

Die obige Programmausführung Ausgabe ist:

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

In dem obigen Beispiel durch Unterbeispiel Struktur erzeugt eine Instanz einer Divisionsoperation. Ein Wert von 100 als Struktur Konstruktor Argument übergeben Instanz Mitglied Dekrementierer zu initialisieren.

Sie können das Ergebnis durch den Index-Skript, wie Division erhalten [2] durch zwei 100 geteilt wird.

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

Die obige Programmausführung Ausgabe ist:

Sunday
Monday
Tuesday
Wednesday

Verwendung

Nach den unterschiedlichen Nutzungsszenarien Index Skript hat auch eine andere Bedeutung.

Typischerweise wird der Index-Skript verwendet, um die Sammlung (Sammlung) für den Zugriff auf die Shortcut-Liste (Liste) oder Sequenz (Reihenfolge) der Elemente.

Sie sind freie Index-Skript in Ihrem eigenen bestimmten Klasse zu implementieren oder Struktur die entsprechende Funktionalität bereitzustellen.

Zum Beispiel Swift-Wörterbuch (Dictionary), um die Zugriffsoperation durch den Index Skriptinstanz Wert darin gespeichert zu erreichen. Der nächste Standardwert verwendet im Skript und Wörterbuch-Index des gleichen Typs, und der Wert eines Typ-Wörterbuch Wert wird auf den Index gesetzt Fuß in das Wörterbuch zugewiesen:

import Cocoa

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

print(numberOfLegs)

Die obige Programmausführung Ausgabe ist:

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

Das Beispiel definiert eine Variable namens numberOfLegs und ein Wörterbuch verwenden wörtliche eine Instanz des Wörterbuchs zu initialisieren drei Paare von Schlüssel enthält. numberOfLegs Wörterbuch gespeicherten Wert Typ abgeleiteten Wörterbuch . Nachdem die Dictionary-Instanz wird durch die Art und Weise das Skript Index 2 Integer-Wert in das Wörterbuch Instanz-Index für den Vogel Standort zugewiesen erstellt.


Subscript Skriptoptionen

Subscript Skript ermöglicht eine beliebige Anzahl von Parametern in den Index, und jeder Typ ist auch keine Begrenzung für den Senat.

Rückgabewert Index des Skripts kann jede Art sein.

Subscript Skript können variable Parameter und variable Parameter verwenden.

Eine Klasse oder Struktur sein kann, ihre eigenen Bedürfnisse nach mehreren der folgenden Standard-Skripte zur Verfügung zu stellen, wenn der Index Skript Parameter definieren, indem die Art zu unterscheiden, wird es automatisch die entsprechende Index-Skripte Runtime Index Skript übereinstimmen, das istüberladene Index - Skript.

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

Die obige Programmausführung Ausgabe ist:

1.0
2.0
3.0
5.0

Matrix-Struktur bietet eine zwei Konstruktor Argumente übergeben zwei Parameter die Zeilen und Spalten sind, erstellen Sie ein Array vom Typ Double genug, um die Anzahl der Zeilen * Spalten aufzunehmen. Für die Lagerung, die Größe jedes Elements des Arrays und das Array Anfangswert von 0,0.

Sie können, indem Sie die entsprechende Zeile und Spalte der Reihe einen neuen Matrix-Instanz erstellen.