Swift typealias associatedType

使用typealias为常用数据类型起一个别名,

一方面更容易通过别名理解该类型的用途,

另一方面还可以减少日常开发的代码量。

typealias使用实例:

// 网络请求常用回调闭包
typealias SuccessWithMsg = ((_ msg:String) -> Void)
typealias FailWithError = ((Error) -> Void)

// 用&连接多个协议
typealias UITableViewCommonProtocol = UITableViewDelegate & UITableViewDataSource

class TestDelegate:UITableViewCommonProtocol{
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 0
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell")
        return cell
    }
}


在定义协议时,可使用associatedType来实现泛型

associatedType使用实例

protocol AssociatedTypeTestProtocol{
    associatedtype T
    func appendData(_ data:[T])
    func resetData(_ data:[T])
}
class AssociatedTypeTestView:AssociatedTypeTestProtocol{

    func appendData(_ data: [TestModel]) { // 在实现协议时指明具体类型
    }
    func resetData(_ data: [TestModel]) { // 与上面的方法的类型必须一致
    }
}


Ficow原创,转载请注明出处:http://www.cnblogs.com/ficow/p/8227701.html

原文地址:https://www.cnblogs.com/ficow/p/8227701.html

时间: 2024-08-03 09:13:20

Swift typealias associatedType的相关文章

Swift - 关键字(typealias、associatedtype)

Typealias typealias 是用来为已经存在的类型重新定义名字的,通过命名,可以使代码变得更加清晰.使用的语法也很简单,使用typealias 关键字像使用普通的赋值语句一样,可以将某个已经存在的类型赋值为新的名字.比如在计算二维平面上的距离和位置的时候,我们一般使用Double来表示距离,用CGPoint来表示位置: [javascript] view plain copy func distance(_ point: CGPoint, _ anotherPoint: CGPoin

Swift中使用typealias定义一个闭包closure

在OC中我们定义一个Blocks是这样定义的: typedef void (^ZWProgressHUDCompletionBlock)(); 在Swift中定义一个闭包是这样的: typealias ZWProgressHUDCompletionBlock=()->Void 转载请注明!!!欢迎大家加入交流群:爱疯.爱Coding:209476515 Swift中使用typealias定义一个闭包closure,布布扣,bubuko.com

Swift开发第九篇——Any和AnyObject&typealias和泛型接口

本篇分为两部分: 一.Swift中的Any和AnyObject 二.Swift中的typealias和泛型接口 一.Swift中的Any和AnyObject 在 Swift 中,AnyObject 可以代表任何 class 类型的实例,Any 可以表示任意类型,包括方法(func)类型,相当于 OC 中的 id.因为 id 可以为空,所以 AnyObject 也是Optional类型的. 验证 Any 和 AnyObject 的特性: import UIKit let swiftInt: Int

Swift类型转换 和 类型别名的定义(typealias)

(一)类型转换 类型转化在 Swift 中是比较严格的,不同类型之间可以认为是不能相互转化的,只能重新产生一个对象和值,并拷贝一份. 1.0 整型数值之间的转换. // 不同类型是不能直接相加的,这时我们就需要用到类型转换 let int8 : Int8 = 12 let int16 : Int16 = 14 + Int16(int8) print(int16) //输出 : 26 又上可见,通过转化也可以顺利得到正确的值,但是值得我们注意的是:由短整型向长整型转换是都可以成功的,且不会丢失值:

Swift教程之typealias取代OC的typedef

//MARK:-------swift中的typedef-------------- //使用 关键字定义类型别名,类似typedef typealias NSInteger = Int var value : NSInteger = 45 value = 12 print(value); //MARK:-------String-------------- let label = "The width is " let width = 94 var widthLabel = labe

swift protocol(协议) associatedtype关联类型

定义一个协议时,有的时候声明一个或多个关联类型作为协议定义的一部分将会非常有用.关联类型为协议中的某个类型提供了一个占位名(或者说别名),其代表的实际类型在协议被采纳时才会被指定.你可以通过 associatedtype 关键字来指定关联类型.比如使用协议声明更新cell的方法: //模型 struct Model { let age: Int } //协议,使用关联类型 protocol TableViewCell { associatedtype T func updateCell(_ da

[Swift 开发] 使用闭包传值(typealias)

在Swift中使用闭包来实现两个界面的传值 例如:有A类和B类. B类 //声明闭包 typealias valueBlock = (Float)->() var returnPrice: valueBlock? //调用该闭包 self.returnPrice?(price) A类 let sb = UIStoryboard(name:"Main", bundle: nil) let vc = sb.instantiateViewControllerWithIdentifier

Swift:元组、typealias和泛型

一.元组 元组是多个值组合而成的复合值.元组中的值可以是任意类型,而且每一个元素的类型可以是不同的. 1. 直接给元组填充内容 let http404Error = (404, "Not Found") 2. 给元组内容设置名称 let http200Status = (statusCode: 200, description: "OK") 3. 访问元组 let code = http200Status.0 let code2 = http200Status.st

Swift中协议的简单介绍

熟悉objective-c语言的同学们肯定对协议都不陌生,在Swift中苹果将 protocol 这种语法发扬的更加深入和彻底.Swift语言中的 protocol 不仅能定义方法还能定义属性,配合 extension 扩展的使用还能提供一些方法的默认实现,而且不仅类可以遵循协议,现在的枚举和结构体也能遵循协议了.基于此本文从 1,协议中定义属性和方法 , 2,协议的继承.聚合.关联类型 , 3,协议的扩展 , 4,Swift标准库中常见的协议 , 5,为什么要使用协议 5个方面结合自身的学习经