首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Swift3.0 - 下标

  • 定义
代码语言:javascript
复制
subscript(index: Int) -> Int {
    get {
    }
    set(newValue) { 
    }
}
  • 应用

a.需求: 获取字符串第2个字符

一般写法:

代码语言:javascript
复制
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: "你好吗")

我们扩展下表写法

代码语言:javascript
复制
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.需求: .截取范围内的字符串

代码语言:javascript
复制
extension String{
    subscript(begin:Int,end:Int) -> String{
        let range = self.index(startIndex, offsetBy: begin)...self.index(startIndex, offsetBy: end)
        return self[range]      
    }
}
// 调用
let subString = string[2,4]

更优雅的写法

代码语言:javascript
复制
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.下标的参数不能是inout 修饰的类型 2.类或者结构体可以提供任意多个下标实现 3.下标也是可以在枚举中使用的

下一篇
举报
领券