Isa*_*iah 4 identity hashable swift swift-protocols 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
}
}
Run Code Online (Sandbox Code Playgroud)
上面的结构体还不符合Identifiable协议。我如何将其身份实现为它的suit和rank(仅创建一次)的唯一组合?本质上,它的身份可以是“黑桃-1”或“钻石杰克”。此外,如果可能的话,我希望将 保留rank为一种Int类型,以便稍后进行算术运算。先感谢您!
Rob*_*ier 10
由于这种类型是由其值的组合精确定义的,因此它是它自己的标识符。所以只要 Card 是 Hashable,它就可以识别自己:
extension Card: Hashable, Identifiable {
var id: Self { self }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
681 次 |
| 最近记录: |