类型擦除非通用协议所需的任何...结构吗?

时间:2016-03-31 03:28:55

标签: swift

为框架定义通用Swift协议(即,具有至少一个associatedtype的协议)时,通常的做法是提供Any...结构,例如SomethingTypeAnySomething。例如,标准库使用AnySequence执行此操作。

这是非通用协议的必要条件吗?在这种情况下,您可以直接参考协议类型,因此协议本身似乎已经是类型擦除版本?

1 个答案:

答案 0 :(得分:0)

没有关联类型的协议可以很容易地用作Type本身。通常这样做是为了允许各种具体类型存储在集合中,只能通过所有具体类型实现的通用协议来识别它们。

或者用另一种方式"键入擦除"是一种处理具有相关类型的协议的技术。如果您的协议没有关联类型,则无需使用该技术。