根据以下规格,我试图做一个枚举来表示纸牌的等级:
排名枚举应仅包含三种情况:.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
}
}
}
}