Swift入门教程15-扩展(extension)
2014-11-27 21:46
465 查看
原创Blog,转载请注明出处
http://blog.csdn.net/column/details/swift-hwc.html
一、扩展(extensions)的定义
扩展是向一个已有的类、结构体或者枚举添加新的功能。扩展不需要获得原始类的源码。
扩展与objective C中的categories类似
扩展可以增加的功能包括
1、计算属性和计算静态属性(不可以添加存储属性和属性观察期)
2、新的实例方法和类型方法
3、提供新的构造器
4、定义下表标本
5、定义和使用新的嵌套类型
6、使已有类型符合某个协议
语法
由关键字extension声明
二、扩展String的实例
不了解String的同学参考我之前写的这篇文章
/article/1374166.html
一个例子涵盖了除了协议外的常用扩展
http://blog.csdn.net/column/details/swift-hwc.html
一、扩展(extensions)的定义
扩展是向一个已有的类、结构体或者枚举添加新的功能。扩展不需要获得原始类的源码。
扩展与objective C中的categories类似
扩展可以增加的功能包括
1、计算属性和计算静态属性(不可以添加存储属性和属性观察期)
2、新的实例方法和类型方法
3、提供新的构造器
4、定义下表标本
5、定义和使用新的嵌套类型
6、使已有类型符合某个协议
语法
由关键字extension声明
extension SomeType { // }扩展使其符合某个协议
extension SomeType: SomeProtocol, AnotherProctocol { // 协议实现写到这里 }协议这部分后会后续讲解
二、扩展String的实例
不了解String的同学参考我之前写的这篇文章
/article/1374166.html
一个例子涵盖了除了协议外的常用扩展
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] } //定义新的构造器 init(first:String,second:String) { self.init(first+second) } //定义新的嵌套类型,这里的嵌套类型是一个枚举 //所谓嵌套类型,简单理解就是在一个类型里定义另一个类型 enum Kind{ case IsIntStr,NotIntStr } //定义一个新的实例变量,返回这个字符串是否是可以转换为Int var kind:Kind{ var result:Kind = Kind.IsIntStr if self.toInt()? == nil{ result = .NotIntStr } return result } } var str = String(first:"hello ",second:"hwc") var str1 = str.substring(from:6) //hwc var str2 = str.substring(from:0,to:5) //hello var str3 = str.substring(from:0,length:5)//hello var str4 = str[0...5] //hello var strKind = str.kind //NotIntStr if strKind == String.Kind.NotIntStr{ println("Not an int string") }备注:想看下结果的同学直接把这段代码拷贝到palyground中就能看到结果
相关文章推荐
- Firefox扩展开发 (插件开发) Extension开发 入门教程 5步走 五步走
- 《新概念51单片机C语言教程-入门、提高、开发、扩展全攻略》杂录2--知识补遗
- AIR Native Extension实现iOS应用内付费(In-App Purchase)全教程(二)——AIR面向iOS设备的原生扩展
- Apple Swift 编程语言入门教程
- 苹果Swift语言入门教程
- 苹果Swift语言入门教程【中文版】
- 看C#入门教程上一处错误,扩展了一下^运算符的命题思路
- Apple Swift编程语言入门教程
- Linux基础入门及系统管理01-Shell三剑客之egrep及扩展正则表达式15
- jQuery 入门教程(15): 删除HTML元素
- Apple Swift编程语言入门教程
- 《新概念51单片机C语言教程-入门、提高、开发、扩展全攻略》杂录3
- yii快速入门教程15
- Mozilla Firefox Extension扩展 内幕 教程 源代码分析 安装过程分析(XPInstall,xpcom,rdf,xpi,chrome,manifest)
- 2013 duilib入门简明教程 -- 自绘控件 (15)
- Python 入门教程 15 ---- Advanced Topics in Python
- 《新概念51单片机C语言教程-入门、提高、开发、扩展全攻略》杂录1--单片机双机通信
- Android入门进阶教程(15)-进程创建zygote 详解
- ios新开发语言swift 入门教程
- Apple Swift编程语言入门教程