我有这个游乐场:
import Foundation
enum WeekDay: Int {
case mon, tues, wed, thurs, fri, sat, sun
}
let wd = WeekDay(rawValue: 0)! // mon
let param = [wd: [1, 2, 3]]
message(dict: param)
func message(dict: [AnyHashable: [Int]?]) {
for (k, v) in dict {
print(k, type(of: k), v) // mon AnyHashable Optional([1, 2, 3])
if let k = k as? WeekDay {
print("got it: \(k)")
}
}
}
但我永远无法打印got it: ...
。
为什么我无法从AnyHashable
投射到WeekDay
?
我想在函数AnyHashable
中使用message
的原因是dict
的关键字可以是Int
或WeekDay
。如果我不使用AnyHashable
,我应该将哪种类型用于我的目的?
由于
答案 0 :(得分:6)
您应该使用base
的{{1}}值转换回其原始类型,如下所示
AnyHashable