之前有介紹過不同的資料型態,我們可以透過下標的方式,來獲取其中的元素。
var array = [1,2,3,4,5,6,7]
// 透過下標獲取陣列第三個元素,注意下標從零開始
array[2]
開發者也可以透過自定義的資料型態來賦予下標訪問的功能。
class MyArray {
var array: Array<Int>
init(param: Int...){
array = param
}
// subscript是Swift用來定義下標功能的方法
subscript(index: Int) -> Int{
set{
// 默認外界設置的值會以newValue為名稱傳入,開發者也可以自定義
array[index] = newValue
}
get{
return array[index]
}
}
}
var myArray = MyArray(param: 1,2,3,4,5)
// 透過下標進行訪問
myArray[2]
myArray[1] = 0
下標使用subscript來定義,與普通方法類似,參數和返回值分別作為下標和獲取下標所取的值,但是subscript實現部分和計算屬性比較像,必須實現一個get程式碼和一個可選的set方法,get用於使用下標取值,set用於下標設置值,因此subscript更像是計算屬性和方法的混合體,實際上下標訪問不只局限於一維下標,也可以改造成二維的。
class MyArray {
var array: Array<Array<Int>>
init(param: Array<Int>...){
array = param
}
// subscript是Swift用來定義下標功能的方法
subscript(index1: Int, index2: Int) -> Int{
set{
// 默認外界設置的值會以newValue為名稱傳入,開發者也可以自定義
array[index1][index2] = newValue
}
get{
var tmp = array[index1]
return tmp[index]
}
}
}
var myArray = MyArray(param: [1,2,3],[3,4,5],[6,7,8])
// 透過下標進行訪問
// 訪問結構中第二個陣列第三個元素返回五
myArray[1.2]
// 設置第五個陣列中第三個元素的值
myArray[4,2] = 0
接下來,是構造方法的介紹