Swift泛型
2016-03-06 20:14
399 查看
泛型是为Swift编程灵活性的一种语法,在函数、枚举、结构体、类中都得到充分的应用,它的引入可以起到占位符的作用,当类型暂时不确定的,只有等到调用函数时才能确定具体类型的时候可以引入泛型。
在这里我们运用泛型为函数提供了一个T类型的占位符,这个占位符就可以在函数的实际调用中被替换成真是类型。
定义类型参数时增加一个限制,约束这个类型参数必须继承自特定的类,或遵守一个特定的协议或合成协议,这就叫做类型约束。
泛型函数
定义
[code]fun 函数名<T,S>(形参列表)->返回值类型 { //函数体... }
例子:
[code] func copyArray<T>(src:[T],inout dest:[T]) { for element in src { dest.append(element) } var arr=[1,2] copyArray([3,4], dest: &arr) print(arr)
在这里我们运用泛型为函数提供了一个T类型的占位符,这个占位符就可以在函数的实际调用中被替换成真是类型。
结构体泛型
[code] struct WXRect<T> { var x:T var y:T var Add:(T,T) { return (self.x,self.y) } } let rect=WXRect<Double>(x: 20.0, y: 20.0) let (30.0,20.0)=rect.Add print("(\(x),\(y))")
类中泛型
[code] class Swift<T> { var info:T init(info:T) { self.info=info } } var swift=Swift<String>(info:"Swift泛型") print("\(swift.info)真强大")
类型约束
上面的例子中,泛型形参没有什么约束,我们可以对泛型传入任何值,但在实际中,或许有时候我们需要为泛型增加某些特定的约束。定义类型参数时增加一个限制,约束这个类型参数必须继承自特定的类,或遵守一个特定的协议或合成协议,这就叫做类型约束。
语法格式:
<类型形参1:父类,类型形参2:协议,类型形参3:protocol<协议1,协议2>,..>Where语句
where语句要求一个关联类型遵循一个特定的协议,或那个特定的类型参数和关联类型可以是相同的<类型形参:父类型,类型形参2:协议,…where 条件>
相关文章推荐
- Swift CAShapeLayer,UIBezierPath绘制图形
- iOS - Swift - 图书展示项目
- Swift图书展示项目笔记
- Swift构造函数
- dyld: Library not loaded: @rpath/libswiftCore.dylib 错误的解决
- Swift 之 RxSwift
- iOS开发--Swift RAC响应式编程
- OC Swift 混编
- iOS - Swift - 语法糖
- swift : NSData数据类型与String字符串类型的转换方法
- swift空间位置,大小改变的动画效果
- swift之自定义表格控件(UITableView)
- swift 调用第三方的oc 方法
- Swift - 时间控制器NSTimer(每隔一定时间执行某个函数)
- Swift 继承Inheritance
- swift:CoreData简单入门(增加、查询、修改、删除)(详细讲解)
- How to create a pure Swift module
- swift基本语法
- Swift 初体验之三(终结篇),实现登陆注册
- iOS3D-Touch开发之Home Screen Quick Actions(Swift)