Swift - Abonelikler

Sınıflar, Yapılar ve Numaralandırmalarda bir koleksiyonun, dizinin ve bir listenin eleman üyelerine erişim abonelikler yardımıyla gerçekleştirilir. Bu alt simgeler, değerleri indeks yardımıyla saklamak ve almak için kullanılır. Dizi öğelerine someArray [index] yardımıyla erişilir ve bir Dictionary örneğindeki sonraki üye öğelerine someDicitonary [anahtar] olarak erişilebilir.

Tek bir tür için, alt simgeler, tekli bildirimden çoklu bildirime kadar değişebilir. Alt simgeye aktarılan dizin değerinin türünü aşırı yüklemek için uygun alt simgeyi kullanabiliriz. Alt simgeler ayrıca, giriş veri türü bildirimleri için kullanıcı gereksinimlerine göre tek boyuttan çoklu boyuta kadar değişir.

Alt Simge Bildirimi Sözdizimi ve Kullanımı

Hesaplanan özelliklerin bir özetini alalım. Alt simgeler de hesaplanan özelliklerle aynı sözdizimini izler. Tür örneklerini sorgulamak için, alt simgeler köşeli parantez içine yazılır ve ardından örnek adı verilir. Alt simge sözdizimi, 'örnek yöntemi' ve 'hesaplanan özellik' sözdizimiyle aynı sözdizimi yapısını izler. 'alt simge' anahtar sözcüğü, alt simgelerin tanımlanması için kullanılır ve kullanıcı, dönüş türleriyle birlikte tek veya birden çok parametre belirtebilir. Abonelikler okuma-yazma veya salt okunur özelliklere sahip olabilir ve örnekler, hesaplanan özelliklerinki gibi 'alıcı' ve 'ayarlayıcı' özelliklerinin yardımıyla depolanır ve alınır.

Sözdizimi

subscript(index: Int) −> Int {
   get {
      // used for subscript value declarations
   }
   set(newValue) {
      // definitions are written here
   }
}

Örnek 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")

Yukarıdaki programı oyun alanını kullanarak çalıştırdığımızda, aşağıdaki sonucu elde ederiz -

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

Örnek2

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

Yukarıdaki programı oyun alanını kullanarak çalıştırdığımızda, aşağıdaki sonucu elde ederiz -

Sunday
Monday
Tuesday
Wednesday

Alt Simge Seçenekleri

Alt simgeler, birden çok girdi parametresini alır ve bu girdi parametreleri de herhangi bir veri türüne aittir. Ayrıca değişken ve değişken parametreleri de kullanabilirler. Alt simgeler varsayılan parametre değerleri sağlayamaz veya herhangi bir giriş parametresi kullanamaz.

Birden çok alt simgenin tanımlanması, bir sınıf veya yapının gerektiğinde birden çok alt simge tanımı sağlayabildiği "alt simge aşırı yükleme" olarak adlandırılır. Bu çok sayıda alt simge, alt simge ayraçları içinde bildirilen değer türlerine göre çıkarılır.

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

Yukarıdaki programı oyun alanını kullanarak çalıştırdığımızda, aşağıdaki sonucu elde ederiz -

1.0

Swift 4 alt simgesi, uygun veri türleri için tek parametreyi birden çok parametre bildirimine destekler. Program, 'Çift' veri türlerini depolamak için 'Matrix' yapısını 2 * 2 boyutlu bir dizi matrisi olarak ilan eder. Matrix parametresi, satırları ve sütunları bildirmek için Tamsayı veri türleriyle girilir.

Matrix için yeni örnek, aşağıda gösterildiği gibi başlatmaya satır ve sütun sayısı iletilerek oluşturulur.

var mat = Matrix(rows: 3, columns: 3)

Matris değerleri, satır ve sütun değerleri aşağıda gösterildiği gibi virgülle ayrılmış olarak alt simgeye geçirilerek tanımlanabilir.

mat[0,0] = 1.0  
mat[0,1] = 2.0
mat[1,0] = 3.0
mat[1,1] = 5.0