標籤:
本博文為子墨原創,轉載請註明出處!
http://blog.csdn.net/zimo2013/article/details/50177691
1.概述
下標指令碼subscript,可以定義在類(Class)、結構體(structure)和枚舉(enumeration)中,是訪問集合(collection),列表(list)或序列(sequence)中元素的捷徑。可以使用下標指令碼的索引設定和擷取值,不需要再調用對應的存取方法。舉例來說,用下標指令碼訪問一個Array執行個體中的元素可以寫作someArray[index],訪問Dictionary執行個體中的元素可以寫作someDictionary[key]。
//Dictionarypublic subscript (position: DictionaryIndex<Key, Value>) -> (Key, Value) { get }public subscript (key: Key) -> Value?一個類型可以定義多個下標指令碼,通過不同索引類型進行重載。下標指令碼不限於一維,你可以定義具有多個入參的下標指令碼滿足自訂類型的需求。
subscript(m:Int)->Intsubscript(m:Int, n:Int)->Intsubscript(name:String)->String
下標指令碼允許你通過在執行個體名稱後面的方括弧中傳入一個或者多個索引值來對執行個體進行存取。文法類似於執行個體方法文法和計算型屬性文法的混合。與定義執行個體方法類似,定義下標指令碼使用subscript關鍵字,指定一個或多個入參和傳回型別。與執行個體方法不同的是,下標指令碼可以設定為讀寫或唯讀。這種行為由 getter 和 setter 實現,有點類似計算型屬性:
subscript(index: Int) -> Int { get { // 返回一個適當的 Int 類型的值 } set(newValue) { // 執行適當的賦值操作 }}
2.代碼
enum Colors:Int{ case RED=1 case BLUE=2 subscript(m:Int)->Int{ return self.rawValue*m } subscript(m:Int, n:Int)->Int{ return self.rawValue*m*n } subscript(name:String)->String{ return "name:\(name) value=\(self.rawValue)" }}print("subscript--->\(Colors.RED[2])")print("subscript (m:Int, n:Int)--->\(Colors.BLUE[2,3])")print("subscript name--->\(Colors.BLUE["name"])")
IOS_Swift_Subscripts下標指令碼