Swift入门教程10-subscript下标脚本

来源:互联网 发布:淘宝养小号技巧 编辑:程序博客网 时间:2024/05/11 04:24
下标脚本
subscript

可以使用在类,结构体,枚举中
提供一种类似于数组或者字典通过下标来访问对象的方式

subscript可以重载,就是一个类可以定义多个下标脚本
可以设置为只读和读写
一、语法
参数不可以是inout类型参数,且参数不能有默认值
subscript(参数1,参数2...)->返回值{get{}set(newValue){}}

二、举例
例子一 

简单的通过下标脚本访问属性
struct CSDN{var ID:Int = 123456var name:String = "hello_hwc"subscript(index:Int)->Any?{switch(index){case 0:return IDcase 1:return Stringdefault:return nil//default:assert("Index out of range")}}}var instance = CSDN()if let temp = instance[2]{println("success")}

解释下为什么要返回Any?
因为在使用的过程当中,有可能会下标越界,例子一采用返回nil的方式,因为返回类型有可能为nil,并且类型不确定
,所以返回Any?用户可以在使用的过程中判断是否取到了值。
当然也可以采用断言的方式提醒越界

例子二

我们来做一个复杂的例子,通过扩展String来通过下标的方式获得子字符串,同时提供几个substring的方法

extension String {    subscript (r: Range<Int>) -> String {        get {            let subStart = advance(self.startIndex, r.startIndex, self.endIndex)            let subEnd = advance(subStart, r.endIndex - r.startIndex, self.endIndex)            return self.substringWithRange(Range(start: subStart, end: subEnd))        }    }    func substring(from: Int) -> String {        let end = countElements(self)        return self[from..<end]    }    func substring(from: Int, length: Int) -> String {        let end = from + length        return self[from..<end]    }    func substring(from:Int, to:Int) ->String    {        return self[from..<to]    }}var str = "hello world"var str1 = str.substring(6)var str2 = str.substring(0,to:5)var str3 = str.substring(0,length:5)

10 0
原创粉丝点击