如何在模块中引用类型与其所在模块具有相同名称的类型?

Ale*_*dro 10 swift

我试图在框架内引用一个类型,该类型的名称与框架的名称相同.更容易在代码中解释:

在框架中 Something

public struct A { ... }
public class Something { ... }
Run Code Online (Sandbox Code Playgroud)

在框架中 OtherFramework

public struct A { ... }
Run Code Online (Sandbox Code Playgroud)

然后在主项目中导入两个模块:

import Something
import OtherFramework

let myA = A() // 'A' is ambiguous for type lookup in this context
Run Code Online (Sandbox Code Playgroud)

如果我这样做

import Something
import OtherFramework

let myA = Something.A() // 'A' is not a member type of 'Something'
Run Code Online (Sandbox Code Playgroud)

有什么办法引用ASomething其他不是改变框架?

Sul*_*han 8

一种可能的方法是不导入整个模块,只导入您需要的特定类型,例如导入Something模块中的类Something:

import class Something.Something
Run Code Online (Sandbox Code Playgroud)


Ale*_*dro 5

我发现的一个解决方案是创建一个单独的 .swift 文件:

import Something
typealias SomethingA = A
Run Code Online (Sandbox Code Playgroud)

进而

import Something
import OtherFramework

let myA = SomethingA()
Run Code Online (Sandbox Code Playgroud)