这似乎是一个非常基本的问题,但一直无法找到答案。
这是我尝试过的
var items = [Comparable: [NSObject]]()
var items = [Comparable, Hashable: [NSObject]]()
var items = [protocol<Comparable, Hashable>: [NSObject]]()
typealeas Key = T where T: Hashable, T: Comparable
var items = [Key: [NSObject]]()
最佳答案
Comparable
和 Hashable
本身都不能用作类型,因为它们的定义中包含 Self
,并且只能用作类型一般约束。
如果您考虑一下,无论如何,您的字典能够拥有不同可比较类型的键,这实际上没有意义,因为每个可比较类型只能与自己的类型进行比较,而不能与其他类型进行比较。
如果您的字典仅具有特定的可比较、可散列类型,则可以将包含此代码的函数或类设为通用并限制其中的类型参数:
func foo<T : protocol<Comparable, Hashable> >() {
var items = [T: [NSObject]]()
}
关于swift - 创建可比较和可哈希键的字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28485273/