11--swift之下標腳本

1.簡介數組

下標腳本能夠定義在類,結構體,枚舉這些目標中函數

能夠經過索引快捷地獲取值spa

var a: Array<Int> = [1,2,3,4,5]orm

print(a[0])索引

a[3] = 23ip

print(a[3])get

var dic: Dictionary<Int,String> = [1:"tom",2:"kite",3:"rose"]it

print(dic[2])io

2.自定義下標腳本的語法變量

struct SomeStruct {

var a:Int

subscript(index:Int)->Int{

get{

return index*a

}

set{

a=newValue*index

}

}

}

var s = SomeStruct(a: 5)

print(s[3])//get取值

s[5] = 6//set賦值

print(s.a)

print(s[5])//從新取值

//只讀.只有get沒有set

struct SomeStruct {

var a: Int

subscript(index:Int)->Int{

//        get{

//            return index*a

//        }

return index*a

}

}

var s = SomeStruct(a: 2)

print(s[2])

3.小標腳本的用法

var dic:Dictionary<Int,String> = [1:"tom",2:"kite",3:"rose"]

print(dic[1]!)

dic[2] = "jack"

print(dic[2]!)

4.下標腳本選項

下標腳本容許任意數量的入參索引,而且入參類型沒有限制。返回值能夠是任意類型,可使用變量參數和可變參數,但使用寫入讀出(inout)參數或者給參數設置默認值都是不容許的。一個類或者結構體能夠根據自身須要提供多個下標腳本實現,在定義時經過入參的類型進行區分,使用下標腳本時會自動匹配合適的下標腳本實現運行,這就是下標腳本的重載。

5.實例

用行列表操做一維數組

struct Matrix{


let rows:Int,columns:Int//定義行數列數

var grid: [Double]//定義網格,網格是一個數組

init(rows: Int,columns: Int){

self.rows = rows

self.columns = columns

self.grid = Array(count: rows*columns, repeatedValue: 5.0)

}

//定義一個判斷行列是否有效的函數

func indexIsValidForRow(row: Int,column: Int)->Bool{

return row>=0&&row<rows&&column>=0&&column<columns

}

//

subscript(row: Int,column: Int)->Double{

get{

assert(indexIsValidForRow(row, column: column), "Index out of range")//評估行列是否有效,無效則輸出"Index out of range"

return grid[(row*columns)+column]//返回一個單元格的值

}

set{

assert(indexIsValidForRow(row, column: column), "Index out of range")

grid[(row*columns)+column] = newValue//賦值

}

}

}

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


m[2,1] = 6

print(m.grid)

m.grid[4] = 8

print(m.grid)

相關文章
相關標籤/搜索