Swift 下標
訪問一個集合的元素成員,在類中的序列和列表,結構和枚舉都可以使用下標。這些下標用於存儲和使用索引來檢索值。數組元素可使用如:someArray[index],在 Dictionary 實例及其後續成員元素的訪問也可以使用如:someDicitonary[key]。
對於單一類型,下標範圍可以從單一到多個聲明。我們可以用適當的下標重載傳遞給下標索引值的類型。下標也可以根據輸入數據類型聲明範圍從單一維度到多維度。
下標聲明語法和用法
讓我們回顧一下計算屬性。下標也遵循計算屬性相同的語法。對於查詢類型的實例下標括在方括號內,接着是實例名稱。下標語法遵循結構作爲 「實例方法」 和 「計算屬性」 相同的語法。「subscript」 關鍵字用來定義標,用戶可以指定一個或多個參數,它們帶有返回類型。下標可以有讀寫或只讀屬性和實例存儲和檢索使用 「getter」 和 「setter」 屬性作爲計算屬性。
語法
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) println("The number is divisible by \(division[9]) times") println("The number is divisible by \(division[2]) times") println("The number is divisible by \(division[3]) times") println("The number is divisible by \(division[5]) times") println("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 {privatevar 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() println(p[0]) println(p[1]) println(p[2]) println(p[3])
當我們使用 playground 運行上面的程序,得到以下結果
Sunday
Monday
Tuesday
Wednesday
下標選項
下標採用單一到多元的輸入參數,這些輸入參數也屬於任意數據類型。還可以使用變量,可變參數的參數。下標不能提供缺省參數值,或使用任何 in-out 參數。
定義多個標被稱爲「下標重載'在一個類 或結構體根據需要可以提供多個下標定義。這些多個標是基於被下標括號內聲明值的類型推斷。
structMatrix{let rows:Int, columns:Intvarprint:[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{returnprint[(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 println("\(mat[0,0])") println("\(mat[0,1])") println("\(mat[1,0])") println("\(mat[1,1])")
當我們使用 playground 運行上面的程序,得到以下結果
1.0
2.0
3.0
5.0
Swift 下標支持單參數到多參數聲明相應數據類型。該程序聲明的「矩陣」結構爲2*2維數組矩陣來存儲 「Double」 數據類型。 矩陣參數被輸入整數數據類型用來聲明行和列。
矩陣新實例是通過使行和列數來初始化創建的,如下所示。
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