gpt4 book ai didi

swift - Swift 中的协议(protocol)见证表和 vtable 有什么区别?

转载 作者:行者123 更新时间:2023-12-04 17:35:36 27 4
gpt4 key购买 nike

我试图理解 swift 的 vtable 和 witness table 之间的区别。从理论上讲,它应该是允许动态分配类方法的相同机制。 SIL 的文档包含两段暗示它们不同的段落。但这让我有点困惑。

那么,这两者到底有什么区别呢?

最佳答案

在我的理解中,如您所说,vtables 允许类方法的动态分派(dispatch)。该表是在编译时生成的。

另一方面,见证表允许泛型类型的动态调度,因此该表是不同的,因为它需要映射泛型条目以实现相同的结果:动态调度。这些表包含编译器用于“生成运行时调度表”的信息。该信息未在编译时定义。如果您查看文档,见证表会映射基本协议(protocol)、它需要的方法以及它的关联类型和它的协议(protocol)一致性(关联类型)。

不确定我是否正确理解了您的问题?

关于swift - Swift 中的协议(protocol)见证表和 vtable 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56794554/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com