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? { ... } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |