Swift(二十、扩展)
2015-11-15 11:21
507 查看
1、Swift入门学习笔记(第一版),对Swift的基础知识点进行梳理总结。知识点一直在变,只是作为参考,以苹果官方文档为准~
2、在学习完基本的知识点以后会结合官方文档及相关资料,在此版本的基础上进行添加更改。
利用扩展实现在没有权限获取原始源代码的情况下扩展类型的能力(逆向建模)
区别于OC,
b、定义实例方法和类型方法————>不能重写已有功能
c、提供新的构造器
d、定义下标
e、定义和使用新的嵌套类型
f、使已有类型遵循某个协议
g、对协议进行扩展
也可适配一个或多个协议
Output:
可以向类中添加新的便利构造器,但是不能添加新的指定构造器或析构器,这两者必须由原始类提供
Output:
2、在学习完基本的知识点以后会结合官方文档及相关资料,在此版本的基础上进行添加更改。
二十、扩展
向一个已有的类、结构体、枚举类型或协议类型添加新功能。利用扩展实现在没有权限获取原始源代码的情况下扩展类型的能力(逆向建模)
区别于OC,
Swift的扩展没有名字
1、Swift扩展提供功能
a、添加计算属性或计算静态属性————>不能添加存储属性,不能添加已有属性的属性观察器b、定义实例方法和类型方法————>不能重写已有功能
c、提供新的构造器
d、定义下标
e、定义和使用新的嵌套类型
f、使已有类型遵循某个协议
g、对协议进行扩展
2、语法
extension SomeType { // 加到SomeType的新功能写到这里 }
也可适配一个或多个协议
extension SomeType: SomeProtocol, AnotherProctocol { // 协议实现写到这里 }
3、计算属性-方法-可变实例方法
extension Int { //计算属性 var km:Int {return self*1_000} var m :Int {return self} //添加方法 func repetitions(task:() -> ()) { for _ in 0..<self { task() } } //可变实例方法,修改实例本身,mutating参数 mutating func square() { self = self*self print(self) } } let oneKM = 1.km print("One km is \(oneKM) meters") 3.repetitions({ print("Hello") }) var someInt = 3 someInt.square()
Output:
Hello Hello Hello 9
4、添加下标-构造器
扩展可以向已有类型添加新的构造器,也可为自己的创建类型添加,或者提供该类的原始实现中没有包含的额外初始化选项可以向类中添加新的便利构造器,但是不能添加新的指定构造器或析构器,这两者必须由原始类提供
extension String { init(string:String,repeatCount:Int) { var count = repeatCount if(count <= 1) { self = string }else { self = string while(count > 1) { self = self + string count-- } } } subscript(index:Int) -> Character? { if index < 0 || index > self.characters.count-1 { return nil } return self[self.endIndex.advancedBy(-index-1)] } } var str:String = "Hello" print(str[0]!) var testStr = String(string: "hello", repeatCount: 3) print(testStr)
Output:
o hellohellohello
相关文章推荐
- Apple Swift学习教程
- C#、ASP.NET通用扩展工具类之TypeParse
- Lua编程示例(二):面向对象、metatable对表进行扩展
- Windows Powershell扩展类型系统
- C#、ASP.NET通用扩展工具类之LogicSugar
- SQL Server下几个危险的扩展存储过程
- jQuery 学习第七课 扩展jQuery的功能 插件开发
- 运行Node.js的IIS扩展iisnode安装配置笔记
- 一个扩展时间段的dir命令的vbs脚本
- Ruby中使用SWIG编写ruby扩展模块实例
- PHP memcache扩展的三种安装方法
- 用C/C++扩展你的PHP 为你的php增加功能
- .NET 扩展实现代码
- JS扩展方法实例分析
- JavaScript Array扩展实现代码
- 使用JQuery库提供的扩展功能实现自定义方法
- javascript String 的扩展方法集合
- 几个扩展存储过程使用方法
- php对mongodb的扩展(初出茅庐)