Swift - Berlangganan
Mengakses anggota elemen dari koleksi, urutan dan daftar di Kelas, Struktur dan Penghitungan dilakukan dengan bantuan subskrip. Subscription ini digunakan untuk menyimpan dan mengambil nilai dengan bantuan index. Elemen array diakses dengan bantuan someArray [index] dan elemen anggota berikutnya dalam instance Dictionary dapat diakses sebagai someDicitonary [key].
Untuk satu jenis, subskrip dapat berkisar dari satu hingga beberapa deklarasi. Kita dapat menggunakan subskrip yang sesuai untuk membebani tipe nilai indeks yang diteruskan ke subskrip. Subscripts juga berkisar dari satu dimensi hingga beberapa dimensi sesuai dengan kebutuhan pengguna untuk deklarasi tipe data input mereka.
Sintaks Deklarasi Subscript dan Penggunaannya
Mari kita rekap properti yang dihitung. Subscripts juga mengikuti sintaks yang sama seperti properti yang dihitung. Untuk menanyakan contoh tipe, subskrip ditulis di dalam kurung siku diikuti dengan nama contoh. Sintaks subskrip mengikuti struktur sintaks yang sama seperti sintaks 'metode instance' dan 'properti yang dihitung'. Kata kunci 'subskrip' digunakan untuk mendefinisikan subskrip dan pengguna dapat menentukan satu atau beberapa parameter dengan tipe kembaliannya. Subscripts dapat memiliki properti read-write atau read-only dan instance disimpan dan diambil dengan bantuan properti 'getter' dan 'setter' seperti halnya properti yang dihitung.
Sintaksis
subscript(index: Int) −> Int {
get {
// used for subscript value declarations
}
set(newValue) {
// definitions are written here
}
}
Contoh 1
struct subexample {
let decrementer: Int
subscript(index: Int) -> Int {
return decrementer / index
}
}
let division = subexample(decrementer: 100)
print("The number is divisible by \(division[9]) times")
print("The number is divisible by \(division[2]) times")
print("The number is divisible by \(division[3]) times")
print("The number is divisible by \(division[5]) times")
print("The number is divisible by \(division[7]) times")
Ketika kami menjalankan program di atas menggunakan playground, kami mendapatkan hasil sebagai berikut -
The number is divisible by 11 times
The number is divisible by 50 times
The number is divisible by 33 times
The number is divisible by 20 times
The number is divisible by 14 times
Contoh2
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])
Ketika kami menjalankan program di atas menggunakan playground, kami mendapatkan hasil sebagai berikut -
Sunday
Monday
Tuesday
Wednesday
Opsi di Subskrip
Subscripts menggunakan parameter input tunggal hingga beberapa dan parameter input ini juga termasuk dalam tipe data apa pun. Mereka juga dapat menggunakan parameter variabel dan variadic. Subscripts tidak dapat memberikan nilai parameter default atau menggunakan parameter in-out.
Mendefinisikan beberapa subskrip disebut sebagai 'kelebihan subskrip' di mana kelas atau struktur dapat memberikan beberapa definisi subskrip sesuai kebutuhan. Beberapa subskrip ini disimpulkan berdasarkan tipe nilai yang dideklarasikan dalam tanda kurung kurawal.
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
}
}
}
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])")
Ketika kami menjalankan program di atas menggunakan playground, kami mendapatkan hasil sebagai berikut -
1.0
Subskrip Swift 4 mendukung parameter tunggal ke beberapa deklarasi parameter untuk tipe data yang sesuai. Program mendeklarasikan struktur 'Matrix' sebagai matriks array 2 * 2 dimensi untuk menyimpan tipe data 'Double'. Parameter Matrix diinput dengan tipe data Integer untuk mendeklarasikan baris dan kolom.
Instance baru untuk Matriks dibuat dengan melewatkan jumlah baris dan kolom ke inisialisasi seperti yang ditunjukkan di bawah ini.
var mat = Matrix(rows: 3, columns: 3)
Nilai matriks dapat ditentukan dengan melewatkan nilai baris dan kolom ke dalam subskrip, dipisahkan dengan koma seperti yang ditunjukkan di bawah ini.
mat[0,0] = 1.0
mat[0,1] = 2.0
mat[1,0] = 3.0
mat[1,1] = 5.0