swift:当框架名称中有一个公共实体时,它将指向框架中的公共结构体的路径[重复]

mgdq6dx1  于 2023-10-15  发布在  Swift
关注(0)|答案(1)|浏览(113)

此问题已在此处有答案

How can I disambiguate a type and a module with the same name?(2个答案)
2天前关闭。
假设框架Foo有(不幸的是公共的)类Foo和公共结构体Account

func fetchClient(guid: String) -> Foo.Account? {

产生编译器错误
“Account”不是类“Foo.Foo”的成员类型
在Foo之外访问(public)Account的正确语法是什么?(这里有很多关于类的脏话,别名是框架)

yr9zkbsy

yr9zkbsy1#

目前还没有这样的语法。另请参阅Swift论坛上的this discussion,该论坛正在讨论这个问题。
作为一种变通方法,您可以从Foo导入 * 仅 * Account结构:

import struct Foo.Account

现在你不会看到类Foo,你可以说Foo.Account
如果您还需要类Foo,或者Foo中的许多其他东西,则可以使用上述技术将Foo.Account的类型别名放在单独的文件中。

// this is the entirety of the file:
import struct Foo.Account

typealias FooAccount = Account

此外,如果您使用SPM,还有一个模块别名功能,允许您将Foo重命名为其他名称。参见Swift Evolution Proposal

相关问题