下標腳本subscript,可以定義在類(Class)、結構體(structure)和枚舉(enumeration)中,是訪問集合(collection),列表(list)或序列(sequence)中元素的快捷方式。可以使用下標腳本的索引設置和獲取值,不需要再調用對應的存取方法。舉例來說,用下標腳本訪問一個Array實例中的元素可以寫作someArray[index],訪問Dictionary實例中的元素可以寫作someDictionary[key]。
//Dictionary public subscript (position: DictionaryIndex一個類型可以定義多個下標腳本,通過不同索引類型進行重載。下標腳本不限於一維,你可以定義具有多個入參的下標腳本滿足自定義類型的需求。) -> (Key, Value) { get } public subscript (key: Key) -> Value? subscript(m:Int)->Int subscript(m:Int, n:Int)->Int subscript(name:String)->String
下標腳本允許你通過在實例名稱後面的方括號中傳入一個或者多個索引值來對實例進行存取。語法類似於實例方法語法和計算型屬性語法的混合。與定義實例方法類似,定義下標腳本使用subscript關鍵字,指定一個或多個入參和返回類型。與實例方法不同的是,下標腳本可以設定為讀寫或只讀。這種行為由 getter 和 setter 實現,有點類似計算型屬性:
subscript(index: Int) -> Int { get { // 返回一個適當的 Int 類型的值 } set(newValue) { // 執行適當的賦值操作 } }
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]))