gpt4 book ai didi

可以重新声明 Swift 内置协议(protocol)吗?为什么?

转载 作者:行者123 更新时间:2023-11-28 12:28:51 26 4
gpt4 key购买 nike

我发现了一个非常令人困惑的事情:我们可以重新声明 swift 内置协议(protocol),任何人,例如 SequenceUITableViewDelegate。没有编译错误,甚至没有警告。有人可以向我解释为什么吗?如果这是真的,它将如何影响内置的?

最佳答案

I found a very confusing thing: we can redeclare the swift build-in protocol, anyone, such as Sequence and UITableViewDelegate. No compile error, even no warning. Can someone explain me why?

类、结构、枚举、协议(protocol)和全局变量都是由模块名称分隔的名称。如果您在应用程序 MyApp 中声明一个名为 Sequence 的协议(protocol),则其全名将是 MyApp.Sequence。为方便起见,如果省略名称的模块部分,编译器将尝试猜测它是什么。

If that's the truth, how would it affect the built-in ones?

如果您确实在其中一个系统模块中定义了与类型同名的内容,编译器将在同一模块中优先使用您的版本。其他人的代码,包括 Apple 框架中的代码,将不受影响。您可以通过指定类型的模块名称来消除歧义。因此,在 MyApp 中,您可以通过编写 Swift.Sequence 来使用原始的 Sequence(Swift 是Swift 标准库类型)。

关于可以重新声明 Swift 内置协议(protocol)吗?为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42643654/

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