Swift3.0 - 下標

Swift3.0 - 真的很簡單
Swift3.0 - 數(shù)據(jù)類型
Swift3.0 - Array
Swift3.0 - 字典
Swift3.0 - 可選值
Swift3.0 - 集合
Swift3.0 - 流控制
Swift3.0 - 對象和類
Swift3.0 - 屬性
Swift3.0 - 函數(shù)和閉包
Swift3.0 - 初始化和釋放
Swift3.0 - 協(xié)議protocol
Swift3.0 - 類和結(jié)構(gòu)體的區(qū)別
Swift3.0 - 枚舉
Swift3.0 - 擴展
Swift3.0 - 下標
Swift3.0 - 泛型
Swift3.0 - 異常錯誤
Swift3.0 - 斷言
Swift3.0 - 自動引用計數(shù)(strong,weak,unowned)
Swift3.0 - 檢測API
Swift3.0 - 對象的標識
Swift3.0 - 注釋
Swift3.0 - 元類型
Swift3.0 - 空間命名
Swift3.0 - 對象判等
Swift3.0 - 探究Self的用途
Swift3.0 - 類簇
Swift3.0 - 動態(tài)調(diào)用對象(實例)方法
Swift3.0 - 文本輸出
Swift3.0 - 黑魔法swizzle
Swift3.0 - 鏡像
Swift3.0 - 遇到的坑

  • 定義
subscript(index: Int) -> Int {
    get {
    }
    set(newValue) { 
    }
}
  • 應用

a.需求: 獲取字符串第2個字符

一般寫法:

func getCharacterByIndex(n:Int,string:String)-> Character?{
    let index = string.characters.index(string.characters.startIndex, offsetBy:n)
    return  string.characters[index]
}
let c = getCharacterByIndex(n: 2, string: "你好嗎")

我們擴展下表寫法

let string = "你好,我是酷走天涯"
extension String{
    subscript(n:Int)->Character{
    let index = string.characters.index(string.characters.startIndex, offsetBy:n)
    return  string.characters[index]
    }
}
let c = string[1] // 是不是簡便很多

b.需求: .截取范圍內(nèi)的字符串

extension String{
    subscript(begin:Int,end:Int) -> String{
        let range = self.index(startIndex, offsetBy: begin)...self.index(startIndex, offsetBy: end)
        return self[range]      
    }
}
// 調(diào)用
let subString = string[2,4]

更優(yōu)雅的寫法

extension String{
subscript(range:ClosedRange<Int>)->String{
    let range = self.index(startIndex, offsetBy: range.lowerBound )...self.index(startIndex, offsetBy: range.upperBound)
    return self[range]
}
}
let subString = string[1...5]
  • 注意

1.下標的參數(shù)不能是inout 修飾的類型
2.類或者結(jié)構(gòu)體可以提供任意多個下標實現(xiàn)
3.下標也是可以在枚舉中使用的

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容