Latest web development tutorials

Script subscript Swift

Script subscript dapat didefinisikan dalam kelas (Class), struktur (struktur) dan pencacahan (pencacahan) dari tujuan tersebut dapat dianggap akses ke objek, koleksi pintas atau urutan tidak perlu memanggil tugas contoh spesifik dan akses metode.

Misalnya, script dengan akses ke sebuah contoh elemen indeks array (Array) dapat menulis someArray [index], akses elemen kamus (kamus) misalnya dapat menulis someDictionary [key].

Untuk tujuan yang sama dapat mendefinisikan beberapa skrip subscript, berbagai jenis nilai indeks akan kelebihan beban, dan jumlah nilai indeks mungkin plural.


Sintaks skrip subscript dan Aplikasi

tatabahasa

Script subscript memungkinkan Anda untuk nilai indeks dengan melewati satu atau lebih dari contoh berikut dalam kurung persegi untuk akses dan tugas misalnya.

sintaks mirip dengan pencampuran metode instan dan properti komputasi.

Dan definisi metode contoh mirip dengan definisi script subscript subscript keyword secara eksplisit menyatakan Senat (satu atau lebih) dan jenis kembali.

Dan contoh metode yang berbeda adalah naskah subscript dapat diatur untuk baca-tulis atau hanya untuk dibaca. Dengan cara ini sedikit seperti getter dan sifat komputasi setter:

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

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

Output di atas eksekusi program adalah:

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

Dalam contoh di atas, dengan struktur subexample menciptakan sebuah instance dari operasi pembagian. Sebuah nilai 100 sebagai argumen struktur konstruktor lulus untuk menginisialisasi anggota decrementer misalnya.

Anda bisa mendapatkan hasilnya dengan script subscript, seperti pembagian [2] adalah 100 dibagi dua.

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

Output di atas eksekusi program adalah:

Sunday
Monday
Tuesday
Wednesday

pemakaian

Menurut skenario penggunaan skrip subscript yang berbeda juga memiliki arti yang berbeda.

Biasanya skrip subscript digunakan untuk mengakses koleksi (koleksi), daftar shortcut (daftar) atau urutan (sequence) dari elemen.

Anda bebas untuk menerapkan skrip indeks dalam kelas tertentu Anda sendiri atau struct untuk menyediakan fungsionalitas yang sesuai.

Misalnya, Swift kamus (Kamus) untuk mencapai operasi akses oleh nilai contoh naskah subscript yang tersimpan di dalamnya. Nilai standar berikutnya digunakan dalam naskah dan kamus indeks dari jenis yang sama, dan nilai dari jenis nilai kamus ditugaskan untuk nilai indeks menginjakkan kaki ke dalam kamus:

import Cocoa

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

print(numberOfLegs)

Output di atas eksekusi program adalah:

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

contoh mendefinisikan variabel bernama numberOfLegs dan menggunakan kamus literal untuk menginisialisasi sebuah instance dari kamus berisi tiga pasang kunci. numberOfLegs kamus disimpan jenis nilai Dictionary disimpulkan . Setelah contoh kamus dibuat dengan cara nilai integer script subscript 2 ditugaskan untuk indeks misalnya kamus untuk lokasi burung.


Pilihan skrip subscript

Script subscript memungkinkan sejumlah parameter ke dalam indeks, dan masing-masing jenis juga ada batas untuk Senat.

Indeks Nilai kembalinya script bisa jenis apa pun.

Script subscript dapat menggunakan parameter variabel dan parameter variabel.

Sebuah kelas atau struktur dapat sesuai dengan kebutuhan mereka sendiri untuk menyediakan lebih dari script standar berikut, ketika mendefinisikan script subscript dengan melewati parameter untuk membedakan jenis, maka secara otomatis sesuai dengan skrip subscript naskah runtime subscript yang tepat, yangkelebihan beban skrip subscript.

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

Output di atas eksekusi program adalah:

1.0
2.0
3.0
5.0

struktur matriks menyediakan dua argumen konstruktor melewati dua parameter adalah baris dan kolom, membuat sebuah array dari tipe cukup dua kali untuk mengakomodasi jumlah baris * kolom. Untuk penyimpanan, ukuran masing-masing elemen dari array dan nilai awal array 0,0.

Anda dapat membuat contoh Matrix baru dengan melewati barisan yang tepat dan kolom nomor.