我试图学习泛型在编译和运行时阶段如何与协议进行比较。我知道协议如何与存在类型进行React。协议是存在类型,所以在编译阶段他们一步一步地采用Car类型。
第一个
泛型呢?我真的很想知道如何在编译和运行时阶段行动。他们使用指针对吗?当在编译时间?在运行时一切都为泛型准备好了。
这个例子看起来也一样,但是一个是编译,另一个不是。
protocol Returnable {
associateType ReturnType
}
//This will compile
func returnTheType<T: Returnable>(object: T) -> T.ReturnType { } ✅
//This won't compile
func returnTheType(object: Returnable) -> object.ReturnType { } ❌
1条答案
按热度按时间mrwjdhj31#
我想你有一个这样的函数,
在后台,该函数还接收汽车的PWT和VWT,并向该函数提供必要的信息,以便在必要时能够设置值缓冲区,并确定汽车对象的协议特定函数的驱动实现()。这个新生成的函数现在是特定于类型的,使您可以访问Car对象的任何关联类型,并且所有这些类型信息都是在编译时确定的-这也是为什么我们可以将关联类型作为泛型函数的返回类型,而不能将其作为基于协议的函数的返回类型的部分原因。