Skrip subskrip pantas
Skrip subskrip boleh ditakrifkan dalam sasaran seperti kelas, struktur dan penghitungan ia boleh dianggap sebagai pintasan untuk mengakses objek, koleksi atau jujukan tanpa memanggil contoh tertentu.
Sebagai contoh, untuk menggunakan skrip indeks untuk mengakses elemen dalam contoh tatasusunan (Array), anda boleh menulis someArray[index] dan untuk mengakses elemen dalam contoh kamus (Kamus), anda boleh menulis beberapaKamus[kunci].
Berbilang skrip subskrip boleh ditakrifkan untuk sasaran yang sama, terlebih beban oleh jenis nilai indeks yang berbeza dan bilangan nilai indeks boleh berbilang.
Sintaks dan aplikasi skrip subskrip
Sintaks
Skrip subskrip membolehkan anda menghantar satu atau lebih nilai indeks dalam kurungan segi empat sama selepas kejadian untuk akses dan berikan nilai kepada kejadian.
Sintaks adalah serupa dengan gabungan kaedah contoh dan sifat yang dikira.
Sama seperti mentakrifkan kaedah contoh, mentakrifkan skrip subskrip menggunakan kata kunci subskrip untuk mengisytiharkan secara eksplisit parameter input (satu atau lebih) dan jenis pulangan.
Tidak seperti kaedah contoh, skrip subskrip boleh ditetapkan kepada baca-tulis atau baca sahaja. Kaedah ini sedikit seperti pengambil dan penetap sifat yang dikira:
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])")
Hasil output pelaksanaan program di atas ialah:
100 除以 9 等于 11 100 除以 2 等于 50 100 除以 3 等于 33 100 除以 5 等于 20 100 除以 7 等于 14
Dalam contoh di atas, melalui Struktur subcontoh mencipta contoh operasi bahagi. Nilai 100 diluluskan sebagai parameter kepada pembina struktur untuk memulakan decrementer ahli contoh.
Anda boleh mendapatkan hasilnya dengan melanggan skrip, contohnya pembahagian[2] ialah 100 dibahagikan dengan 2.
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 pelaksanaan program di atas ialah:
Sunday Monday Tuesday Wednesday
Penggunaan
Skrip subskrip juga mempunyai makna yang berbeza bergantung pada senario penggunaan .
Biasanya skrip subskrip ialah pintasan yang digunakan untuk mengakses elemen dalam koleksi, senarai atau jujukan.
Anda bebas untuk melaksanakan skrip subskrip dalam kelas atau struktur khusus anda sendiri untuk menyediakan fungsi yang sesuai.
Sebagai contoh, Kamus Swift melaksanakan akses kepada nilai yang disimpan dalam contohnya melalui skrip subskrip. Gunakan jenis nilai yang sama seperti indeks kamus dalam skrip subskrip dan tetapkan nilai jenis nilai kamus pada kaki subskrip untuk menetapkan nilai untuk kamus:
import Cocoa var numberOfLegs = ["spider": 8, "ant": 6, "cat": 4] numberOfLegs["bird"] = 2 print(numberOfLegs)
Hasil output pelaksanaan di atas atur cara ialah:
["ant": 6, "bird": 2, "cat": 4, "spider": 8]
Contoh di atas mentakrifkan pembolehubah bernama numberOfLegs dan memulakan tika kamus yang mengandungi tiga pasang nilai utama dengan literal kamus. Jenis nilai storan kamus numberOfLegs disimpulkan sebagai Kamus
Pilihan skrip Subskrip
Skrip Subskrip membenarkan sebarang bilangan indeks parameter input dan tiada had pada setiap jenis parameter input.
Nilai pulangan skrip subskrip juga boleh daripada sebarang jenis.
Skrip subskrip boleh menggunakan parameter pembolehubah dan parameter variadik.
Kelas atau struktur boleh menyediakan berbilang pelaksanaan skrip subskrip mengikut keperluannya sendiri Apabila mentakrifkan skrip subskrip, mereka dibezakan mengikut jenis parameter yang diluluskan. Apabila menggunakan skrip subskrip, subskrip yang sesuai akan. dipadankan secara automatik. Skrip dijalankan, iaitu kelebihan beban skrip subskrip .
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])")
Hasil keluaran pelaksanaan program di atas ialah:
Struktur1.0 2.0 3.0 5.0
Matriks menyediakan kaedah pembinaan dengan dua parameter masuk Kedua-dua parameter ialah baris dan lajur, mewujudkan tatasusunan jenis Double yang cukup untuk menampung bilangan baris * lajur. Untuk storan, tetapkan saiz tatasusunan dan mulakan setiap elemen tatasusunan kepada 0.0.
Anda boleh membina tika Matriks baharu dengan menghantar bilangan baris dan lajur yang sesuai.