【发布时间】:2021-08-20 01:49:55
【问题描述】:
我正在尝试将访问者模式从我的(旧)java 代码迁移到 swift。到目前为止,我有一个通用的 FIFO(工作正常)。
protocol FiFo {
associatedtype U
func enqueue(_ : U)
func dequeue() -> U
}
我还想告诉 FIFO 的实例只接受一个访问者的实例,该访问者使用与 FIFO 实例相同的泛型类型。
protocol Visitor {
associatedtype T
func processValue(_ value : T)
}
protocol FiFo {
associatedtype U
func enqueue(_ : U)
func dequeue() -> U
func visit(_ visitor : Visitor<U>)
}
我正面临着:
不能专门化非泛型类型“访客”
有什么提示吗?谢谢!
【问题讨论】:
-
泛型和关联类型是两个不同的东西。
-
感谢您的回答 - 我很乐意将两者都标记为有帮助。并感谢泛型与关联类型之间存在差异的一般提示(快速)。
-
这能回答你的问题吗? How to create generic protocols in Swift?
-
@RTXGamer:重新编辑:反引号用于
code,不用于一般强调。 “访客模式”或“fifo”不是代码。 -
@pkamb:我发现了另一个问题,但我完全不确定如何将该解决方案应用于两个协议的问题。
where出现的部分在另一篇文章中对我来说不是很清楚。