加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift – 如何约束扩展SequenceType的协议中的Generator.Element

发布时间:2020-12-14 04:31:08 所属栏目:百科 来源:网络整理
导读:假设我正在编写处理多个帐户的社交媒体抓取工具(例如Facebook,Twitter等) 我为消息定义了一些协议(消息具有显示名称和消息体,Timestamped具有时间戳,Forwarded具有原始消息ID等). 然后我定义了一个消息来源的协议,我现在写的 protocol MessageSource : Seque
假设我正在编写处理多个帐户的社交媒体抓取工具(例如Facebook,Twitter等)

我为消息定义了一些协议(消息具有显示名称和消息体,Timestamped具有时间戳,Forwarded具有原始消息ID等).

然后我定义了一个消息来源的协议,我现在写的

protocol MessageSource : SequenceType {
    associatedtype MessageType : Timestamped

    func messages (since : NSDate) -> Generator
}

这个想法是我可以通过编写msgSource.take(n)来获取n个最新的消息,并通过编写msgSource.messages获取所有消息(自:d)

我的问题是,如何将从SequenceType继承的Generator.Element约束为与MessageType相同,因此两个生成器都保证返回相同的类型.

解决方法

默认情况下,您可以实现类似的功能:

protocol MessageSource: SequenceType {
    func messages (since : NSDate) -> Generator
}

extension MessageSource where Generator.Element: Timestamped {
    typealias MessageType = Generator.Element

    func foo() -> MessageType? {
        ...
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读