Latest web development tutorials

Swift indeks skrypt

Skrypt indeks może być zdefiniowana w klasie (klasa), struktury (struktura) oraz wyliczenie (wyliczenie) tych celów można uznać za dostęp do obiektu, zbiór skrótów lub sekwencji nie trzeba wywoływać zadania specyficzne dla instancji oraz dostęp metody.

Na przykład, skrypt z dostępem do indeksu tablicy (Array) elementu instancji może napisać someArray [Index], dostęp do elementu słownika (Dictionary) instancji może napisać someDictionary [key].

Na ten sam cel można zdefiniować wiele skrypt indeksu, różne rodzaje wartości indeksu być przeciążona, a liczba wartości indeksu może być mnogiej.


Indeks skrypt składnia i aplikacji

gramatyka

skrypt dolny pozwala na wartości indeksu przez wprowadzenie jednego lub więcej z następujących przykładów, w nawiasach kwadratowych dostępu i przypisania na przykład.

Składnia jest podobna do metody mieszania instancji i mienia obliczeniowej.

Oraz określenie metody instancji jest podobna do definicji indeksie indeks skrypt Hasła jawnie zadeklarować Senat (jeden lub więcej) oraz typ zwracany.

I przykłady różnych metod jest skrypt indeks może być ustawiony tylko do odczytu lub tylko do odczytu. W ten sposób trochę jak getter i setter właściwości obliczeniowych:

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

Przykład 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])")

Wyjście powyżej wykonywanie programu jest:

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

W powyższym przykładzie, przez subexample struktury tworzy instancję operacji dzielenia. Wartość 100 jako argument konstruktora Struktura przekazywana do zainicjowania instancji członek decrementer.

Można uzyskać wynik przez skrypt indeksu, takie jak podział [2] 100 podzielona przez dwa.

Przykład 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])

Wyjście powyżej wykonywanie programu jest:

Sunday
Monday
Tuesday
Wednesday

zwyczaj

Według różnych scenariuszy użycia skryptu indeksem ma także inne znaczenie.

Zazwyczaj indeks skrypt służy do uzyskania dostępu do kolekcji (kolekcja), wykaz skrótów (lista) lub sekwencja (sekwencji) elementów.

Jesteś wolny, aby zaimplementować skrypt indeksu w swoim własnym danej klasy lub struct, aby zapewnić odpowiednią funkcjonalność.

Na przykład, słownik Swift (słownik), aby uzyskać dostęp do operacji o wartość instancji skryptu indeks przechowywanych w nim. Następna wartość standardem używanym w skrypcie i słownik indeksu tego samego typu i wartości typu wartości słownika jest przypisany do wartości indeksu wstąpiłem do słownika:

import Cocoa

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

print(numberOfLegs)

Wyjście powyżej wykonywanie programu jest:

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

Przykład definiuje zmienną o nazwie numberOfLegs i używać słownika dosłownego zainicjować instancją słownika zawiera trzy pary kluczy. Słownik numberOfLegs przechowywane typ wartości wywnioskować słownik , Po słownika instancja jest tworzona przez sposób wartość skrypt indeks 2 całkowitą przypisaną do słownika indeksie instancji do lokalizacji ptaka.


Opcje skryptów indeks

Indeks skrypt pozwala dowolnej liczby parametrów do indeksu, a każdy typ ma również ograniczeń co do Senatu.

Powrót indeksu Wartość skryptu mogą być dowolnego typu.

Skrypt indeks można używać zmiennych parametrów i zmiennych parametrów.

Klasy lub struktury mogą być w zależności od własnych potrzeb, aby zapewnić więcej z następujących skryptów standardowych, przy definiowaniu skrypt indeksu dolnego przekazując parametry odróżnić rodzaj, to automatycznie dopasuje odpowiednie skrypty skrypt indeksie dolnym wykonawczego indeksu, który jestprzeciążony skrypt indeks.

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

Wyjście powyżej wykonywanie programu jest:

1.0
2.0
3.0
5.0

Struktura Matrix dostarcza dwa argumenty konstruktora przeszły dwa parametry są wiersze i kolumny, należy utworzyć tablicę typu tyle Podwójne aby pomieścić liczbę wierszy * kolumnach. W celu przechowywania, wielkość każdego elementu macierzy i tablicy wartości początkowej 0,0.

Można skonstruować nową instancję Matrix przekazując odpowiedni wiersz i kolumnę numeru.