Je suis en train d'utiliser Károly Lőrentey du B-arbre basé OrderedSet
dans un projet. Cependant, je suis en cours d'exécution dans une question où je ne peux pas déclarer une inqualifiable OrderedSet<T>
parce que le nom des conflits entre la Fondation de l' NSOrderedSet
(importés en tant que OrderedSet
en Swift 3) et BTree
s' 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
Pour résoudre ce conflit, vous le feriez normalement qualifier le nom, et qui vous donnerait BTree.OrderedSet<T>
. Cependant, l' BTree
module contient également une classe nommée BTree
. Si j'écris BTree.OrderedSet
, Swift pense que je fais référence à un type nommé OrderedSet
qui est imbriqué dans l' BTree.BTree
type.
let set = BTree.OrderedSet<Int>()
// error: reference to generic type 'BTree' requires arguments in <...>
Si je n'ai pas l' import BTree
, je ne peux pas utiliser l' BTree
nom à tous.
// no import BTree
let set = BTree.OrderedSet<Int>()
// error: use of undeclared type 'BTree'
Comment puis-je résoudre cette ambiguïté entre l' BTree
type et l' BTree
module?