詳解Swift中的下標(biāo)訪(fǎng)問(wèn)用法
Swift中的Array,Dictionary類(lèi)型可以通過(guò)下標(biāo)或者鍵值的方式來(lái)進(jìn)行數(shù)據(jù)的訪(fǎng)問(wèn),實(shí)際上在Swift的語(yǔ)法中,下標(biāo)可以定義在類(lèi)、結(jié)構(gòu)體、枚舉中。開(kāi)發(fā)者可以通過(guò)下標(biāo)的方式來(lái)對(duì)屬性進(jìn)行訪(fǎng)問(wèn)而不用使用專(zhuān)門(mén)的存取方法。并且定義的下標(biāo)不限于一維,開(kāi)發(fā)者可以定義多維的下標(biāo)來(lái)滿(mǎn)足需求。
下標(biāo)的語(yǔ)法結(jié)構(gòu)
下標(biāo)使用subscript來(lái)定義,其有些類(lèi)似于方法,參數(shù)和返回值本別作為下標(biāo)入?yún)⒑屯ㄟ^(guò)下標(biāo)所取的值。但是在subscript實(shí)現(xiàn)部分,又十分類(lèi)似于計(jì)算屬性,其需要實(shí)現(xiàn)一個(gè)get塊和可選實(shí)現(xiàn)一個(gè)set塊,get塊用于使用下標(biāo)取值,set塊用于使用下標(biāo)設(shè)置值,因此,subscript結(jié)構(gòu)更像是計(jì)算屬性和方法的混合體,示例如下:
class MyClass {
var array=[1,1,1,1,1]
subscript(param1:Int)->Int{
set{
array[param1] = newValue
}
get{
return array[param1]
}
}
}
var obj = MyClass()
obj[0] = 3
class MyClass {
var array=[1,1,1,1,1]
subscript(param1:Int,param2:Int)->Int{
set{
array[param1] = newValue
}
get{
return array[param1]
}
}
}
var obj = MyClass()
obj[0,1] = 3
下標(biāo)的特性
Swift中的下標(biāo)可以自定參數(shù)個(gè)數(shù)和參數(shù)類(lèi)型,返回?cái)?shù)據(jù)的類(lèi)型開(kāi)發(fā)者也可以進(jìn)行自定義。但是有一點(diǎn)需要注意,下標(biāo)的參數(shù)不能設(shè)置默認(rèn)值,也不能設(shè)置為in-out類(lèi)型。多維下標(biāo)常用語(yǔ)行列數(shù)據(jù)的訪(fǎng)問(wèn),示例如下:
class SectionAndRow {
var array:Array<Array<Int>> = [ [1,2]
,[3,4]
,[5,6]
,[7,8]
]
subscript(section:Int,row:Int)->Int{
get{
let temp = array[section]
return temp[row]
}
}
}
var data = SectionAndRow()
//通過(guò)二維下標(biāo)取值
data[1,1]
相關(guān)文章
Swift操作Quartz 2D進(jìn)行簡(jiǎn)單的繪圖與坐標(biāo)變換的教程
這篇文章主要介紹了Swift操作Quartz 2D進(jìn)行簡(jiǎn)單的繪圖與坐標(biāo)變換的教程,Quartz 2D是Core Graphics框架中的一個(gè)重要組件,經(jīng)常被Mac OS或和iOS開(kāi)發(fā)者用來(lái)繪圖,需要的朋友可以參考下2016-04-04
SwiftUI?List在MacOS中的性能優(yōu)化示例
這篇文章主要為大家介紹了SwiftUI?List在MacOS中的性能優(yōu)化示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
Swift實(shí)現(xiàn)Selection Sort選擇排序算法的實(shí)例講解
選擇排序是一種穩(wěn)定的排序算法,且實(shí)現(xiàn)代碼通常比冒泡排序要來(lái)的簡(jiǎn)單,這里我們就來(lái)看一下Swift實(shí)現(xiàn)Selection Sort選擇排序的實(shí)例講解2016-07-07
Swift Extension擴(kuò)展得使用詳細(xì)介紹
在swift中,extension與Objective-C的category有點(diǎn)類(lèi)似,但是extension比起category來(lái)說(shuō)更加強(qiáng)大和靈活,它不僅可以擴(kuò)展某種類(lèi)型或結(jié)構(gòu)體的方法,同時(shí)它還可以與protocol等結(jié)合使用,編寫(xiě)出更加靈活和強(qiáng)大的代碼2022-09-09
Swift3.0剪切板代碼拷貝及跨應(yīng)用粘貼實(shí)現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了Swift3.0剪切板代碼拷貝及跨應(yīng)用粘貼的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
SwiftUI使用Paths和AnimatableData實(shí)現(xiàn)酷炫的顏色切換動(dòng)畫(huà)
這篇文章主要介紹了SwiftUI使用Paths和AnimatableData實(shí)現(xiàn)酷炫的顏色切換動(dòng)畫(huà),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2020-05-05

