我正试图在一个项目中使用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) 考虑:
FrameworkA定义了类型Thing.FrameworkB也定义了类型Thing和类型FrameworkA.我如何FrameworkA.Thing在所述文件中引用?以下行失败了Thing is not a member of FrameworkA.
let t : FrameworkA.Thing? = nil
Run Code Online (Sandbox Code Playgroud)