gpt4 book ai didi

swift - 元字典类型

转载 作者:行者123 更新时间:2023-11-28 15:08:11 24 4
gpt4 key购买 nike

我想写一个接受任何类型的函数来决定完成它的工作。但是我遇到了 dictionary.type 的错误。它为其占位符的键请求特定类型。

我有什么办法可以做到吗?

因为我可能会这样使用:

foo(type: type(of: someDict)) // someDict can be any type of dictionary.
// can be [String: Any] or [Int, Any] or [Double: Any] or [Character: Any], etc.


func foo(type: Any.Type) {
switch type {
case is Int.Type:
print("is Int")
//case is Dictionary: // error, Reference to generic type 'Dictionary' requires arguments in <...>
case is Dictionary<Hashable, Any>: // also error, Using 'Hashable' as a concrete type conforming to protocol 'Hashable' is not supported
print("is Dictionary")
default:
print("don't know")
}
}

最佳答案

首先,您不应该使用 Any 作为函数的输入参数类型。相反,您应该使您的函数通用。

要解决匹配 Dictionary 的元类型的问题,您应该简单地将 Hashable 更改为 AnyHashable,这是类型删除的容器键入一个 Hashable 值。

func foo<T>(type: T.Type) {
switch type {
case is Int.Type:
print("is Int")
case is Dictionary<AnyHashable, Any>.Type:
print("is Dictionary")
default:
print("don't know")
}
}

关于swift - 元字典类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48127409/

24 4 0
文章推荐: ios - 删除部分谷歌驱动器字符串 URL
文章推荐: ios - RealmSwift 无法将结果 转换为结果