相关疑难解决方法(0)

如何消除具有相同名称的类型和模块的歧义?

我正试图在一个项目中使用KárolyLőrentey的B树OrderedSet.但是,我遇到了一个我不能声明不合格的问题,OrderedSet<T>因为名称在Foundation NSOrderedSet(OrderedSet在Swift 3中导入)和BTrees 之间存在冲突OrderedSet.

let set = OrderedSet<Int>()
// error: 'OrderedSet' is ambiguous for type lookup in this context
// Found this candidate: Foundation.OrderedSet:3:14
// Found this candidate: BTree.OrderedSet:12:15
Run Code Online (Sandbox Code Playgroud)

要解决此冲突,您通常会对该名称进行限定,这样您就可以获得该名称BTree.OrderedSet<T>.但是,该BTree模块还包含一个名为的类BTree.如果我写BTree.OrderedSet,Swift认为我指的是一个名为OrderedSet嵌套在BTree.BTree类型中的类型.

let set = BTree.OrderedSet<Int>()
// error: reference to generic type 'BTree' requires arguments in <...>
Run Code Online (Sandbox Code Playgroud)

如果我不这样做import BTree,我根本不能使用这个BTree名字.

// no import BTree
let …
Run Code Online (Sandbox Code Playgroud)

swift swift3

37
推荐指数
2
解决办法
4641
查看次数

Swift命名空间冲突

考虑:

  • 一个名为Swift的框架FrameworkA定义了类型Thing.
  • 调用的Swift框架FrameworkB也定义了类型Thing和类型FrameworkA.
  • 一个在同一个Swift文件中导入两个框架的应用程序.

我如何FrameworkA.Thing在所述文件中引用?以下行失败了Thing is not a member of FrameworkA.

let t : FrameworkA.Thing? = nil
Run Code Online (Sandbox Code Playgroud)

namespaces swift

4
推荐指数
1
解决办法
2120
查看次数

标签 统计

swift ×2

namespaces ×1

swift3 ×1