Swift 中关键字typealias重命名与associatedtype关联对象,在实际开发中比较常见。
typealias
typealias 是用来为已经存在的类型重新定义名字的,通过命名,可以使代码变得更加清晰。使用的语法也很简单,使用 typealias 关键字像使用普通的赋值语句一样,可以将某个已经存在的类型赋值为新的名字。
typealias类似于Objective-C中的typedef,简单的将block重命名如下:
typealias success = (_ data: String) -> Void
typealias fail = (_ error: String) -> Void
func fetchData(_ url: String, success: success, fail: fail) {
}
associatedtype
associatedtypen表示位置的数据类型,只是先定义一个名字,具体表示的类型要在最终使用的时候进行赋值。在定义协议时,可以用associatedtype声明一个或多个类型作为协议定义的一部分。
protocol NetworkRequest {
associatedtype DataType
func didReceiveData(_ data: DataType)
}
class ViewModel: NetworkRequest {
typealias DataType = String
func didReceiveData(_ data: DataType) {
}
}