swift - 如何使用两个枚举变量实现 Identifiable
问题描述
使用 Swift 5.3,如何Identifiable
通过使结构的标识依赖于两个枚举变量的组合来在结构上实现协议?
有问题的代码很简单,
struct Card: Identifiable {
let suit: Suit
let rank: Rank
enum Suit {
case spades, clubs, diamonds, hearts
}
enum Rank: Int {
case one = 1, two, three, four, five, six, seven, jack, queen, king
}
}
上面的结构还不符合Identifiable
协议。我怎样才能将它的身份实现为它的唯一组合suit
和rank
(只创建一次)?本质上,它的身份可能是“黑桃 1”或“钻石杰克”。此外,如果可能的话,我想保留rank
作为一种Int
类型,以便以后进行算术运算。先感谢您!
解决方案
由于这种类型是由其值的组合精确定义的,因此它是它自己的标识符。所以只要 Card 是 Hashable 的,它就可以识别自己:
extension Card: Hashable, Identifiable {
var id: Self { self }
}
推荐阅读
- git - 让 Atom 在提交前等待
- r - 使用带有 xml2 的管道运算符编写 XML
- solaris - DBX 在使用 -g 构建的共享库中显示不正确的值
- c# - 在处理 WinSCPnet.dll FileTransferProgress 时,如何在 SSIS 脚本任务中使用 DTS.Events.FireInformation()?
- java - URLDecode.decode 方法在 Java 中无法按预期工作
- autocad - DXF 代码 - 3D 折线
- powershell - 在它所在的文件夹中运行 PowerShell 脚本
- loops - 在循环迭代语法之间
- oracle - 检查列和表是否都存在并根据结果运行查询
- c# - uri 类未显示在系统命名空间中