私はKárolyLohrenteyのB-tree based OrderedSet
をプロジェクトに使用しようとしています。しかし、私は、FoundationのNSOrderedSet
(Swift 3のOrderedSet
としてインポートされている)とBTree
のOrderedSet
の間で名前の競合があるため、未修飾のOrderedSet<T>
を宣言できないという問題に遭遇しています。同じ名前の型とモジュールを明確にするにはどうすればよいですか?
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
この競合を解決するには、通常、名前を修飾だろう、それはあなたにBTree.OrderedSet<T>
を与えるだろう。ただし、BTree
モジュールには、BTree
という名前のクラスも含まれています。 BTree.OrderedSet
と書くと、SwiftはタイプでネストされているOrderedSet
という名前のタイプを参照していると考えています。私はimport BTree
ない場合
let set = BTree.OrderedSet<Int>()
// error: reference to generic type 'BTree' requires arguments in <...>
することは、私は全くBTree
名前を使用することはできません。
// no import BTree
let set = BTree.OrderedSet<Int>()
// error: use of undeclared type 'BTree'
どのように私はBTree
タイプとBTree
モジュール間のこの曖昧さを解決することができますか?
これは大きな質問です。それらのうちの1つを「タタリアス」できますか? – NRitH
私はtypeAliasを使用することができません。タイプリアアースは名前を作成するだけです( 'OrderedSet'は有効で、あいまいでない場合は両方のタイプの名前になります)。しかし、タイプアリア1にしても、私はそれを参照できるようにする必要があります... – zneak
私はこのプロジェクトでFoundationを使用しないので、私は#includeを削除して自分自身のブロックを解除することができましたブリッジヘッダーしかし、それは一般的な(そして実際の)問題を解決するものではありません。 –
zneak