swift - 创建可比较和可哈希键的字典?

标签 swift generics dictionary

这似乎是一个非常基本的问题,但一直无法找到答案。

这是我尝试过的

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]]()

最佳答案

ComparableHashable 本身都不能用作类型,因为它们的定义中包含 Self,并且只能用作类型一般约束。

如果您考虑一下,无论如何,您的字典能够拥有不同可比较类型的键,这实际上没有意义,因为每个可比较类型只能与自己的类型进行比较,而不能与其他类型进行比较。

如果您的字典仅具有特定的可比较、可散列类型,则可以将包含此代码的函数或类设为通用并限制其中的类型参数:

func foo<T : protocol<Comparable, Hashable> >() {

  var items = [T: [NSObject]]()

}

关于swift - 创建可比较和可哈希键的字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28485273/

相关文章:

swift - 如何在 macOs 中禁用键盘输入?

ios - 未调用 iCloud 键值存储更改 (NSUbiquitousKeyValueStoreDidChangeExternallyNotification)

c# - 实现一个非常特殊的通用签名

java - 泛型类型的非泛型对象

Swift 5 CollectionView 通过长按单元格获取 indexPath

swift - 使用 SwipeCellKit 自定义 TableViewCell

java - P 作为泛型中的占位符

actionscript - 对象和字典之间的区别?

c# - 如何从字典对象中获取值?

python - 通过组合两个 .csv 文件在 python 中创建字典