Swift入门教程10-subscript下标脚本
来源:互联网 发布:淘宝养小号技巧 编辑:程序博客网 时间:2024/05/11 04:24
下标脚本
subscript
可以使用在类,结构体,枚举中
提供一种类似于数组或者字典通过下标来访问对象的方式
subscript可以重载,就是一个类可以定义多个下标脚本
可以设置为只读和读写
一、语法
参数不可以是inout类型参数,且参数不能有默认值
二、举例
例子一
简单的通过下标脚本访问属性
解释下为什么要返回Any?
因为在使用的过程当中,有可能会下标越界,例子一采用返回nil的方式,因为返回类型有可能为nil,并且类型不确定
,所以返回Any?用户可以在使用的过程中判断是否取到了值。
当然也可以采用断言的方式提醒越界
例子二
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
- Swift入门教程10-subscript下标脚本
- Swift-下标-subscript
- Swift学习 下标脚本subscript和类扩展Extension
- swift:自定义下标(subscript)
- Swift回忆录下标——subscript
- subscript下标
- subscript下标
- Swift语法—— subscript(自定义下标) 的使用
- Swift之下标脚本
- Swift-下标脚本
- Swift 中的下标脚本
- Swift 下标脚本
- Swift:subscript
- Swift(十二、方法&下标脚本)
- Swift 下标脚本(Subscripts)
- Swift学习:2.12 下标脚本
- swift语言基础之:subscript下标、对象之间的循环强引用的处理方法
- swift - 为类和结构体增加下标(subscript)操作
- 多线程学习(一)----CreateThread
- android 事件响应的四种实现方式
- struts2中取得web项目的根目录
- wxWidgets——Error: Cannot initialize OLE when using CLR
- android 单元测试
- Swift入门教程10-subscript下标脚本
- Eclipse编辑器基本设置
- 泰戈尔名句
- JavaScript进阶(三) 值传递和引用传递
- ubuntu 14.04状态栏不显示时间
- Objects and Classes in Ruby
- Spring配置集合
- 最大k乘积问题
- cc2430的机器周期,振荡周期,定时