Swift下標

在下標的幫助下,可以訪問類,結構和枚舉中的集合,序列和列表的元素成員。 這些下標用於在索引的幫助下存儲和檢索值。 使用someArray [index]來訪問數組元素,並在字典實例中的後續成員元素可以使用someDicitonary [key]來訪問。

對於單個類型,下標可以是單個聲明到多個聲明。 可以使用適當的下標來重載傳遞給下標的索引值的類型。 根據用戶對其輸入數據類型聲明的要求,下標的範圍也從一維到多維。

下標聲明語法及其用法

回顧一下計算屬性。 下標也遵循與計算屬性相同的語法。 對於查詢類型實例,下標寫在方括號內,後跟實例名稱。 下標語法遵循與“實例方法”和“計算屬性”語法相同的語法結構。 subscript關鍵字用於定義下標,用戶可以使用返回類型指定單個或多個參數。 下標可以具有讀寫或只讀屬性,並且在gettersetter屬性的幫助下存儲和檢索實例,如計算屬性的屬性。

語法

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

示例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")

當使用playground運行上述程式時,得到以下結果 -

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

示例2

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

當使用playground運行上述程式時,得到以下結果 -

Sunday
Monday
Tuesday
Wednesday

下標中的選項

下標採用單個到多個輸入參數,這些輸入參數也屬於任何數據類型。 它們還可以使用變數和可變參數。 下標不能提供默認參數值或使用任何輸入輸出參數。

定義多個下標稱為“下標重載”,類或結構可根據需要提供多個下標定義。 這些多個下標是根據下標括弧中聲明的值的類型推斷的。參考以下示例代碼 -

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

當使用playground運行上述程式時,得到以下結果 -

1.0

Swift 4下標支持單個參數到適當數據類型的多個參數聲明。 程式將Matrix結構聲明為2 * 2維數組矩陣,以存儲Double數據類型。 Matrix參數輸入整數數據類型,用於聲明行和列。

通過將行和列計數傳遞給初始化來創建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

上一篇: Swift方法 下一篇: Swift繼承