微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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()

原文地址:https://www.jb51.cc/swift/321116.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐