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 举报,一经查实,本站将立刻删除。