Swift中的Array,Dictionary類型可以通過下標或者鍵值的方式來進行數據的訪問,實際上在Swift的語法中,下標可以定義在類、結構體、枚舉中。開發者可以通過下標的方式來對屬性進行訪問而不用使用專門的存取方法。并且定義的下標不限于一維,開發者可以定義多維的下標來滿足需求。
下標的語法結構
下標使用subscript來定義,其有些類似于方法,參數和返回值本別作為下標入參和通過下標所取的值。但是在subscript實現部分,又十分類似于計算屬性,其需要實現一個get塊和可選實現一個set塊,get塊用于使用下標取值,set塊用于使用下標設置值,因此,subscript結構更像是計算屬性和方法的混合體,示例如下:
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
下標的特性
Swift中的下標可以自定參數個數和參數類型,返回數據的類型開發者也可以進行自定義。但是有一點需要注意,下標的參數不能設置默認值,也不能設置為in-out類型。多維下標常用語行列數據的訪問,示例如下:
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()//通過二維下標取值data[1,1]
新聞熱點
疑難解答