gpt4 book ai didi

从 AnyHashable 快速转换为枚举

转载 作者:可可西里 更新时间:2023-11-01 00:20:04 24 4
gpt4 key购买 nike

我有这个 Playground :

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

我想在函数message中使用AnyHashable的原因是dict的key可以是IntWeekDay。如果我不使用 AnyHashable,我应该使用哪种类型?

谢谢

最佳答案

你应该使用 AnyHashablebase 值来转换回它的原始类型,如下所示,

if let k = (k.base as? WeekDay), k == .mon {
print("got it: \(k)")
}

关于从 AnyHashable 快速转换为枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50924675/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com