前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Swift3.0 - 下标

Swift3.0 - 下标

作者头像
酷走天涯
发布2018-09-14 14:55:13
5500
发布2018-09-14 14:55:13
举报
  • 定义
代码语言: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.下标也是可以在枚举中使用的

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016.10.07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档