我试图做一个枚举来表达纸牌的排名,按照以下规范:
Rank枚举应仅包含以下三种情况:.ace
,.numeric
和.face
。 .ace
代表一个A,.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
到目前为止,我的问题是要使其打印12以表示“Q”。
我用了:
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/