检查Any是否符合Hashable并获取hash值

Check if Any conforms to Hashable and get hash value

我想获取一个Any符合Hashable的对象的哈希值。

但是,使用此代码:

    let anyValue: Any
    //...
    if let h = anyValue as? Hashable {
        return h.hashValue
    }

我遇到了这个错误

Protocol 'Hashable' can only be used as a generic constraint because it has Self or associated type requirements

您需要使用 AnyHashable 而不是 Hashable,后者是 Hashable 协议的类型擦除版本,用于解决您遇到的特定错误。

if let h = anyValue as? AnyHashable {