另一种“表达方式是含糊不清的”问题。到目前为止,我认为没有人提出这种确切的情况......
如果我在另一个类中嵌入一个类,并将其设为Hashable
,那么我似乎无法将其用作关键字:
class TestClassWithKey {
class Key: Hashable {
static func == (left: Key, right: Key) -> Bool {
return false
}
var hashValue: Int {
return 4
}
}
}
var myList = [TestClassWithKey.Key: TestClassWithKey]()
// Above line gives classic "type of expression is ambiguous"
// compiler error.
显然是荒谬的例子,但是如果我做同样但没有筑巢,一切都很笨拙:
class TestClassWithoutKeyKey: Hashable {
static func == (left: TestClassWithoutKeyKey, right: TestClassWithoutKeyKey) -> Bool {
return false
}
var hashValue: Int {
return 4
}
}
class TestClassWithoutKey {
}
var myList = [TestClassWithoutKeyKey: TestClassWithoutKey]()
我想知道是否有某种方法可以使用嵌套类型作为字典的键,或者(理想情况下)如果不是为什么不这样做。
在swift 3上,但我不认为这是相关的......