不能使用嵌套的hashable类型作为字典中的键获取“没有更多上下文的表达式类型是模糊的”

时间:2016-12-06 18:46:14

标签: swift dictionary types

另一种“表达方式是含糊不清的”问题。到目前为止,我认为没有人提出这种确切的情况......

如果我在另一个类中嵌入一个类,并将其设为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上,但我不认为这是相关的......

0 个答案:

没有答案