为框架定义通用Swift协议(即,具有至少一个associatedtype
的协议)时,通常的做法是提供Any...
结构,例如SomethingType
和AnySomething
。例如,标准库使用AnySequence
执行此操作。
这是非通用协议的必要条件吗?在这种情况下,您可以直接参考协议类型,因此协议本身似乎已经是类型擦除版本?
答案 0 :(得分:0)
没有关联类型的协议可以很容易地用作Type本身。通常这样做是为了允许各种具体类型存储在集合中,只能通过所有具体类型实现的通用协议来识别它们。
或者用另一种方式"键入擦除"是一种处理具有相关类型的协议的技术。如果您的协议没有关联类型,则无需使用该技术。