原創(chuàng)文章缰贝,歡迎轉(zhuǎn)載。轉(zhuǎn)載請(qǐng)注明:關(guān)東升的博客
看下面的示例代碼是不是使用過:
var studentList: String[]? = ["張三","李四","王五"]
studentList[0] = "諸葛亮"
var studentDictionary = [102: "張三",105: "李四", 109: "王五"]
studentDictionary[110] = "董六"
在訪問數(shù)組和字典的時(shí)候柠衍,可以采用下標(biāo)訪問洋满。其中數(shù)組的下標(biāo)是整數(shù)類型索引,字典的下標(biāo)是它的“鍵”珍坊。
下標(biāo)
Swift中的下標(biāo)相當(dāng)于Java中的索引屬性和C#中的索引器牺勾。
下標(biāo)訪問的語(yǔ)法格式如下:
面向?qū)ο箢愋?類型名 {
其他屬性
...
subscript(參數(shù): 參數(shù)數(shù)據(jù)類型) -> 返回值數(shù)據(jù)類型 {
get {
return 返回值
}
set(新屬性值) {
...
}
}
}
下標(biāo)也有類似于計(jì)算屬性的getter和setter訪問器。
getter訪問器是一個(gè)方法阵漏,在最后使用return語(yǔ)句將計(jì)算結(jié)果返回驻民。
setter訪問器“新屬性值”是要賦值給屬性值翻具。參數(shù)的聲明可以省略,系統(tǒng)會(huì)分配一個(gè)默認(rèn)的參數(shù)newValue回还。
示例:二維數(shù)組
在Swift中沒有提供二維數(shù)組裆泳,只有一維數(shù)組Array∧叮可以自定義一個(gè)二維數(shù)組類型工禾,然后通過兩個(gè)下標(biāo)參數(shù)訪問它的元素,形式上類似于C語(yǔ)言的二維數(shù)組蝗柔。
采用下標(biāo)的二維數(shù)組示例代碼如下:
struct DoubleDimensionalArray { //定義了二維數(shù)組結(jié)構(gòu)體
let rows: Int, columns: Int //存儲(chǔ)屬性rows和columns
var grid: [Int]
init(rows: Int, columns: Int) { //構(gòu)造函數(shù)
self.rows = rows
self.columns = columns
grid = Array(count: rows * columns, repeatedValue: 0) //初始化存儲(chǔ)屬性grid
}
subscript(row: Int, col: Int) -> Int { //定義下標(biāo)
get {
return grid[(row * columns) + col]
}
set (newValue1){
grid[(row * columns) + col] = newValue1
}
}
}
var ary2 = DoubleDimensionalArray(rows: 10, columns: 10) //創(chuàng)建并初始化10×10大小的二維數(shù)組
//初始化二維數(shù)組
for var i = 0; i < 10; i++ {
for var j = 0; j < 10; j++ {
ary2[i,j] = i * j
}
}
//打印輸出二維數(shù)組
for var i = 0; i < 10; i++ {
for var j = 0; j < 10; j++ {
print("\t \(ary2[i,j])")
}
print("\n")
}
輸出結(jié)果如下:
0? 0? 0? 0? 0? 0? 0? 0? 0? 0
0? 1? 2? 3? 4? 5? 6? 7? 8? 9
0? 2? 4? 6? 8? 10? 12? 14? 16? 18
0? 3? 6? 9? 12? 15? 18? 21? 24? 27
0? 4? 8? 12? 16? 20? 24? 28? 32? 36
0? 5? 10? 15? 20? 25? 30? 35? 40? 45
0? 6? 12? 18? 24? 30? 36? 42? 48? 54
0? 7? 14? 21? 28? 35? 42? 49? 56? 63
0? 8? 16? 24? 32? 40? 48? 56? 64? 72
0? 9? 18? 27? 36? 45? 54? 63? 72? 81