Swift學習 下標指令碼(十二)

2021-07-05 13:15:45 字數 1693 閱讀 7562

/*下標指令碼可以定義在類(class)、結構體(structure)和列舉(enumeration)這些目標中,

可以認為是訪問集合(collection),列表(list)或序列(sequence的快捷方式,使用下標指令碼的索引設定和獲取值,

不需要再呼叫例項的特定的賦值和訪問方法。

像陣列somearray[index],字典somedirectionary[key]一樣。

對於同乙個目標可以定義多個下標指令碼,通過索引值型別的不同來進行過載,下標指令碼不限於單個緯度,

你可以定義多個入參的下標指令碼滿足自定義型別的需求。

定義下標指令碼使用subscript關鍵字,顯式宣告入參(乙個或多個)和返回型別。

與例項方法不同的是下標指令碼可以設定為讀寫或唯讀。這種方式又有點像計算型屬性的getter和setter:

subscript(index:int) -> int

set(newvalue)

}newvalue的型別必須和下標指令碼定義的返回型別相同。與計算型屬性相同的是set的入參宣告newvalue就算不寫,

在set**塊中依然可以使用預設的newvalue這個變數來訪問新賦的值。

與唯讀計算型屬性一樣,可以直接將原本應該寫在get**塊中的**寫在subscript中:

「get{}」省略不寫

subscript(index: int) -> int

*/struct timestable

}let threetimestable = timestable(multiplier: 3)

print("3

的6倍是\

(threetimestable[6]

)")//3的6倍是 18

/*下標指令碼用法

根據使用場景不同下標指令碼也具有不同的含義。通常下標指令碼是用來訪問集合(collection),

列表(list)或序列(sequence)中元素的快捷方式。你可以在你自己特定的類或結構體中自由的實現下標指令碼來提供合適的功能。

*///定義矩陣

struct matrix

func indexisvalidforrow(row:int, column:int) -> bool

subscript(row:int, column:int) -> double

set }}

var matrix = matrix(rows: 2, columns: 2)

matrix[0,

1]= 1.5

matrix[1,

0]= 3.2

print

(matrix

.grid

)//[0.0, 1.5, 3.2, 0.0]

//let somevalue = matrix[2,2]

//print(somevalue) //下標越界

丟擲錯誤

//指令碼過載的例子,通過不同的引數來區分

struct countnum

//    過載

subscript(num:int, repeatcount:int) -> int

}var somecount = countnum(row: 5, col: 5)

print

(somecount[2]

)  //12

print

(somecount[2,

10]) //120

swift學習 下標指令碼

定義 下標指令碼 可以定義在類 class 結構體 structure 和列舉 enumeration 這些目標中,可以認為是訪問物件 集合或序列的快捷方式,不需要再呼叫例項的特定的賦值和訪問方法。舉例來說,用下標指令碼訪問乙個陣列 array 例項中的元素可以這樣寫 somearray index...

學習Swift 下標指令碼

下標指令碼可以定義在類 class 結構體 structure 和列舉 enumeration 這些目標中,可以認為是訪問集合 collection 列表 list 或序列 sequence的快捷方式,使用下標指令碼的索引設定和獲取值,不需要再呼叫例項的特定的賦值和訪問方法。舉例來說,用下標指令碼訪...

Swift 下標指令碼

playground noun a place where people can play import uikit var str hello,playground 下標指令碼語法 下標指令碼允許你通過在例項後面的方括號中傳入乙個或者多個的索引值來對例項進行訪問和賦值。語法類似於例項方法和計算型屬...