我正在尝试根据以下规范创建一个枚举来表示扑克牌的排名:
Rank 枚举应该只有三种情况:.ace
、.numeric
和 .face
。 .ace
代表 Ace,.numeric
代表数字牌,.face
代表人头牌 JQK。
我们还希望有一个变量 order
来返回要打印的整数的排名(例如,“Q”将返回 12。
枚举产生以下结果:
var a = Rank.ace
var b = Rank.numeric(pipsCount: 7)
var c = Rank.face("Q")
print("\(a.order)") \\prints: 1
print("\(b.order)") \\prints: 7
print("\(c.order)") \\prints: 12
到目前为止,我的问题是让它打印“Q”的 12。
我用过:
case ace
case numeric(pipsCount: Int)
case face(String)
制作案例
然后切换到制作其他东西
switch self {
case .ace:
return 1
case .numeric(let pipsCount):
return pipsCount
case .face
return 0
}
但我只是不确定如何设置 care .face
因为我不确定如何将 JQK 的输入分别转换为 11、12 和 13?
最佳答案
由于您没有明确命名关联值,因此您可以使用您喜欢的任何名称来提取它。在此示例中,我选择了 id
:
enum Rank {
case ace
case numeric(pipsCount: Int)
case face(String)
var order: Int {
switch self {
case .ace:
return 1
case .numeric(let pipsCount):
return pipsCount
case .face(let id):
switch id {
case "J":
return 11
case "Q":
return 12
case "K":
return 13
default:
return 0
}
}
}
}
关于ios - Swift:使用枚举来表示扑克牌的等级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61564047/