Swift: typealias、associatedtype

2017-05-27  本文已影响0人  yehkong

typealias的用法:

typealias是给现有的类型(包括系统和自定义的)进行重新命名,然后就可以用该别名来代替原来的类型,已达到改善程序可读性,而且可以自实际编程中根据业务来重新命名,可以表达实际意义。

使用方法:typealias <#type name#> = <#type expression#>
用法实例:typealias DistanceUnit = Float //表示距离

有一个细节要注意就是:在涉及泛型重名时,不能将整个泛型类型进行重命名,还是看实例:

struct Dog<T> {}
typealias collie = Dog
typealias collie1<T> = Dog<T>
typealias wolfDog = Int
typealias collie2 = Dog<wolfDog>

typealias collie3= Dog<T> //Use of undeclared type 'T'不能通过编译

associatedtype的用法:

在定义协议时,可以用associatedtype声明一个或多个类型作为协议定义的一部分,叫关联类型。这种关联类型为协议中的某个类型提供了别自定义名字,其代表的实际类型或实际意义在协议被实现时才会被指定。用法实例如下:

protocol printObj {
    associatedtype ObjType //声明关联类型
    func printObj(_ obj:ObjType)
}

class printClass :printObj {
    typealias ObjType = String //指定实际类型
    func printObj(_ obj: printClass.ObjType) {
        print("obj:\(obj)")
    }
}
上一篇 下一篇

猜你喜欢

热点阅读