qua*_*yen 2 enums casting optional swift unwrap
我有这个游乐场:
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)")
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我永远不会被got it: ...打印出来.
为什么我不能从一个人投AnyHashable来WeekDay?
我想AnyHashable在函数中使用的原因message是key dict可以是Int或WeekDay.如果我不使用AnyHashable,我应该使用什么类型的目的?
谢谢
你应该使用base值AnyHashable来回退到它的原始类型,如下所示,
if let k = (k.base as? WeekDay), k == .mon {
print("got it: \(k)")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
283 次 |
| 最近记录: |