swift associatedtype使用

前端之家收集整理的这篇文章主要介绍了swift associatedtype使用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

swift中protocol不能使用<T>这种泛型,但是提供了associatedtype关键字来支持泛型

//protocol使用 associatedtype 来支持泛型
protocol ObservebleType {
    associatedtype Element
    associatedtype Element2: Comparable
    
    func removeFirst() -> Self.Element?
    func add(item: Element)
}
//实体类型
class Observeble<T: Comparable>: ObservebleType {
    // 实体类型需要实现具体类型
    typealias Element = T //方式1
    typealias Element2 = Int //方式2
    
    var ts: [T]
    init(t: T) {
        ts = [t]
    }
    
    func add(item: T) {
        ts.append(item)
    }
    
    func removeFirst() -> T? {
        guard ts.count > 0 else {
            return nil
        }
        return ts.remove(at: 0)
    }
}

let o = Observeble<String>.init(t: "哈哈")
o.add(item: "haha")
o.removeFirst()
o.removeFirst()
o.removeFirst()

猜你在找的Swift相关文章